前言
我们在浏览文件或者自己写代码的时候,经常会在代码末尾添加这样一行代码
if __name__ == '__main__':
func_name()
那么这行代码的具体作用是什么呢? 如果不添加的话,会影响我们的结果吗?
首先,以双下划线开头和结尾的变量称为内置变量。 另外,我们常见的还有等等。那么内置变量一共有多少个呢?我们可以通过在交互界面中输入以下命令来查看所有内置变量和内置函数:
>>> dir(__builtins__)
结果如下图:
不同情况下的数值
首先我们要知道,在不同的情况下会有不同的值,它的值取决于我们如何执行脚本。 我们可以通过几个例子来感受一下:
# test.py
print(f'__name__ 在 test.py 值为 {__name__}')
然后直接执行代码
$ python test.py
然后看输出
$ python test.py
__name__ 在 test.py 值为 __main__
在这个例子中,我们找到的值是
1
在这个例子中,我们重新创建一个脚本test1.py,然后我们在test1.py中调用test.py
# test1.py
import test
print(f'__name__ 在 test1.py 值为 {__name__}')
然后执行test1.py并查看输出
python test1.py
__name__ 在 test.py 值为 test
__name__ 在 test1.py 值为 __main__
结果是不是很有趣? 整个过程是怎样的?我简单画了一张图
何时使用
有时候,我们写了一个脚本,当我们希望这个脚本单独运行时,我们也希望它在其他脚本中发挥作用。 这个时候我们就需要考虑使用它了。 这里,我们通过对上面的例子1进行改造,可以直观地感受到。 一度
修改test.py文件
# test.py
def hello(name):
print(f'Hello,{name}')
if __name__ == '__main__':
hello("test")
再次修改test1.py文件
# test1.py
from test import hello
hello("test1")
那么让我们尝试直接运行test.py。 显然此时,如果满足if语句的条件,就会输出Hello,test。
$ python test.py
Hello,test
如果此时我们运行test1.py,程序会输出Hello, test1
$ python test1.py
Hello,test1
如果我们在 test.py 中删除 if == "" 会发生什么?
$ python test1.py
Hello,test
Hello,test1
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。