在Python程序中,你会经常看到 name ,例如:
if __name__ == '__main__': main()
本文将介绍如何正确使用和理解这个变量。
请注意, name 在程序中是一个变量,只不过这个变量的命名有点奇怪,用双下划线开头和结尾。这种命名的方法,在Pyhton的类对象设计中,常常用于一些具有特殊作用的属性或者方法名称。 python福利教程领取方式: 1、点赞+评论(勾选“同时转发”) 2、关注小编。并私信回复关键字【19】 (一定要私信哦~点击我的头像就能看到私信按钮了)
如果将编写的一个Python文件,即 .py 为扩展名的文件,作为模块被其他程序引入的时候,我们需要通过 name 这个变量,决定在引入的时候是否要运行该文件。
例如创建一个文件 namescript.py ,内容如下:
def my_function():
print('the value of __name__ is ' + __name__)
def main():
my_function()
if __name__ == "__main__": main()
如果执行 namescript.py 文件,其执行流程如下:
在 importscript.py 中,变量 name 被赋值为 main ,然后执行 import namescript ,Python解析器会自动在模块名字后面增加 .py 并在检索目录中查找该文件——所以,在引入模块的时候不要写成 import namescript.py 。找到了,就引入该文件中的所有代码。
然后,将 namescript.py 文件所运行的空间中的 name 设置为 namescript 。结合上图,在 importingscript.py 和 namescript.py 中,分别有两个同名的 name 变量,但是,它们的值不同。如此,在 namescript.py 中,因为 name 的值是 namescript 了,于是该文件中的 if name == “main” 条件不再成立,所以此条件下的 main() 函数不再执行。
在 importingscript.py 中,调用了 namescript.my_function() ,打印的结果是: the value of name is namescript ,这里的 name 当然是 namescript.py 中的变量。
如果在 importingscript.py 中,增加 print(name) ,打印出来的结果应该是 main 。
如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!私信暗号【666】
|