今天我们来更详细地探讨一下,并用代码进行佐证,帮助大家彻底理解 Python 的代码执行机制!
1. Python 代码如何执行?Python 是一种解释型语言,这意味着代码不需要编译成机器码,而是由 Python 解释器逐行读取并执行。
2. `__name__` 变量:幕后英雄
每个 Python 模块 (包括你写的脚本文件 .py) 都有一个内置的变量 __name__。
当你直接运行一个 Python 脚本时,该脚本的 __name__ 变量会被解释器自动设置为 "__main__"。
当你将一个 Python 文件作为模块导入到其他文件中时,该文件的 __name__ 变量会被设置为模块名 (即文件名,不带 .py 后缀)。
3. 代码示例:见证 `__name__` 的变化
创建两个文件:
my_module.py (作为模块)
# my_module.py
def my_function():
print("这是一个函数,来自 my_module")
print(f"my_module 的 __name__ 值为: {__name__}")
main_script.py (作为主脚本)
# main_script.py
import my_module
def main():
print("这是 main 函数,来自 main_script")
my_module.my_function()
print(f"main_script 的 __name__ 值为: {__name__}")
if __name__ == "__main__":
main()运行结果:
直接运行 my_module.py:
my_module 的 __name__ 值为: __main__直接运行 main_script.py:
my_module 的 __name__ 值为: my_module
main_script 的 __name__ 值为: __main__
这是 main 函数,来自 main_script
这是一个函数,来自 my_module4. 分析:
当直接运行 my_module.py 时,它的 __name__ 值为 "__main__",所以 print 语句会被执行。
当运行 main_script.py 时:
首先导入 my_module,此时 my_module.py 中的代码会被执行,但 if __name__ == "__main__": 条件不成立,所以 my_module 中的 main 函数不会被执行。
然后执行 main_script.py 中的代码,此时 __name__ 为 "__main__",if 条件成立,main 函数会被执行,进而调用 my_module 中的 my_function。
5. 总结:
Python 利用 __name__ 变量巧妙地实现了类似 main 函数的功能,使得代码既可以作为模块导入,也可以作为独立脚本运行。
if __name__ == "__main__": 代码块中的代码只有在直接运行该脚本时才会被执行,这保证了模块化和代码结构的清晰性。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/12538/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取