如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。在把a.py导入到b.py中后,程序依旧是从上到下顺序执行,直接把a.py又执行了一遍,但是在a.py中 if __name__ == '__main__'下的不会在引用文件中执行,因为在b.py中的模块a的__name__直接等于模块名a,而不是当前运行的__main__。
a.py
print(__name__) if __name__ == '__main__': print('yes')
运行结果:
"D:\Program Files\python\python.exe" "D:/Program Files/python/example/a.py" __main__ yes Process finished with exit code 0
b.py
import a class hi(): def hello(): print(__name__) if __name__ == '__main__':#if缩进的位置要注意,如果和class 的内容等齐,那if的内容将被当做class的内容 hi.hello()
运行结果:
"D:\Program Files\python\python.exe" "D:/Program Files/python/example/b.py" a __main__ Process finished with exit code 0
评论