这几天开始学习Python,不太理解__name__的用途
其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不了解为啥加上这一句。
这里作一下解释:
1:__name__是一个变量。前后加了下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
可以查看 Python 全部内置变量和内置函数
>>> dir(__builtins__)
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。
1. 如果模块是被导入,__name__的值为模块名字
2. 如果模块是被直接执行,__name__的值为’__main__’
举栗子:
# test.py
print('Hello World!')
def aaa():
print('this message is from aaa function')
print('now __name__ is %s' % __name__)
def main():
print('this message is from main function')
if __name__ == '__main__':
aaa()
print('now __name__ is %s' % __name__)
#main.py
from test import aaa
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
aaa()
执行mian.py输出
Hello World!
Hi, PyCharm
this message is from aaa function
now __name__ is test
Process finished with exit code 0