Python 奇怪的设定:为什么没有 main 函数?

大家好!上次我们简单聊了 Python 为什么没有 main 函数,今天我们来更详细地探讨一下,并用代码进行佐证,帮助大家彻底理解 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_module

4.  分析:

  • 当直接运行 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__": 代码块中的代码只有在直接运行该脚本时才会被执行,这保证了模块化和代码结构的清晰性。

希望今天的讲解能够帮助你更深入地理解 Python 的代码执行机制!

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片

二、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

图片

三、python入门资料大全

图片

四、python进阶资料大全

图片

五、python爬虫专栏

图片

六、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

图片

七、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

八、python最新面试题

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

印象Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值