|
发表于 2023-3-7 21:36:04
|
显示全部楼层
本帖最后由 isdkz 于 2023-3-8 00:29 编辑
a.py:
- # a.py
- print('in a, __name__:', __name__)
- import b
- print('in a, __name__:', __name__)
复制代码
b.py:
- # b.py
- print('in b, __name__:', __name__)
- import a
- print('in b, __name__:', __name__)
复制代码
执行 b.py 的结果:
in b, __name__: __main__
in a, __name__: a
in b, __name__: b
in b, __name__: b
in a, __name__: a
in b, __name__: __main__
可以看到程序的执行路线为:b -> a -> b -> a -> b,
而且中间的 a 、b、a 的 __name__ 都不为 __main__,也就是此时不是作为主程序运行的,
而是在导包过程中运行的
而加了 if __name__ == '__main__' 并不会改变程序的运行路线,但是它可以限制被运行的代码,
因为在导包的时候 __name__ 不为 '__main__',
a.py:
- # a.py
- print('in a, __name__:', __name__)
- import b
- if __name__ == '__main__':
- print('in a, __name__:', __name__)
复制代码
b.py:
- # b.py
- print('in b, __name__:', __name__)
- import a
- if __name__ == '__main__':
- print('in b, __name__:', __name__)
复制代码
此时程序的运行结果为:
in b, __name__: __main__
in a, __name__: a
in b, __name__: b
in b, __name__: __main__
|
|