求Python中全局变量的详细理解?

 我来答
百度网友023b1c3
科技发烧友

2021-11-05 · 智能家居/数码/手机/智能家电产品都懂点
知道小有建树答主
回答量:1086
采纳率:84%
帮助的人:287万
展开全部

题主你好,

拿实际例子和你说一下吧, 更好理解一些.

我们在拿到一个python脚本的时候,往往发现里面都有如下语句:

注意: __name__和'__main__'虽说看着像一类东西, 但要注意的是__name__是一个变量, 而'__main__'就是一个字符串常量.

-----

假设我有一个文件叫hi.py,内容如下:

A.当我们直接执行hi.py这个文件时, __name__的值就是字符串'__main__'.

B.假设我们还有一个文件hello.py,它把hi.py作为模块导入(因为hello.py想直接用hi.py中定义的hello()函数).

需要注意,上图是将hi.py作为模块导入到了hello.py中(作为模块导入不需要写py后缀,也不能写),重点看下面的两个print()语句, 一个打印的是hi.__name__,一个打印的是__name__, 注意当hi.py被作为模块导入后,hi.__name__得到的是模块名,即hi. 而在被执行的文件中直接输出__name__变量,其值永远是字符串'__main__'. 见执行结果:

-----

看到这里你可能还是云里雾里,下面对照着你的截图拿上面的例子分析一下:

"每个模块中都有一个全局变量__name__", 这句没啥说的,就引入了一个叫__name__的变量.

"__name__的作用是获取当前模块的名称."(这句话其实说的不严谨,但目前先不去细究)这句也不是重点, 下面才说的是__name__的值到底是什么.

"如果当前模块是单独执行的,则其__name__的值就是__main__",干货来了, 拿上面的hi.py来讲,我们直接把hi.py作为可执行文件进行执行,则在它里面print(__name__)就是字符串'__main__'.

"如果是作为模块导入,则其__name__的值就是模块的名字",这也是干货,拿上面hello.py来说,因为hi是作为模块被导入的,所以print(hi.__name__)输出的就是模块名hi.这句指的就是这个意思.另外你看hello.py中也有一个print(__name__)输出的是字符串'__main__',因为我上面说了,只要在你执行的文件里直接单独输出__name__变量,它的值一定是'__main__'.

-----

扩展阅读:

=====

希望可以帮到题主, 欢迎追问.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式