if __name__=='__main__':
的用法
-
_name_ 是个什么
__name__相当于标识当前模块名的变量。如果该模块不是被调用模块,则 __name__=‘__main__如果该模块是被导入的,即import进来的,则__name__=‘模块的名称’。
例如:有两个.py文件,一个为sum.py,用于求两数之和的函数,另一个为calculate.py,用于调用sum.py中的函数。
# sum.py def add(a,b): return a+b print('First Moudle\'s Name:{}'.format(__name__)) # 运行结果为: # First Moudle's Name:__main__
# calculate.py import add print('Second Moudle\'s Name:{}'.format(__name__)) # 运行结果为: # First Moudle's Name:sum # Second Moudle's Name:__main__
从上面两个例子可以很直观的看出,add的__name__在sum.py中为__main__,被调用到calculate.py中则为sum。
-
什么情况下使用
if __name__=='__main__:
当一个.py文件中的某一些代码只有在当前文件为主文件是执行,被调用到其他文件夹下不执行时,可以用到
if __name__=='__main__
例如:还是上面的俩个.py文件,一个为sum.py,用于求两数之和的函数,另一个为calculate.py,用于调用sum.py中的函数,这次将函数的功能补全
# sum.py def add(a,b): return a+b print(add(2,3)) # 运行结果为: # 5
# calculate.py import sum print(sum.add(3,4)) # 运行结果为: # 5 # 7
可以看到不加
if __name__=='__main__:
,sum.py中的print(add(2,3))在calculate.py中同样被执行了。如果想要sum.py中的print(add(2,3))仅在sum.py中执行,被调用到其他文件不执行,则在sum.py中的print(add(2,3))前加上if __name__=='__main__:
即可。下面为加上后的例程:
# sum.py def add(a,b): return a+b if __name__=='__main__': print(add(2,3))
# calculate.py import sum print(sum.add(3,4)) # 运行结果为:7 (没有sum.py中的add(2,3)的结果)