写下此文章,旨在帮助python初学者更加深入了解python代码的执行过程和执行入口,对代码整体有个清晰的理解。博主在自学python过程中,常常搞不清楚python的入口,而学过c的朋友肯定清楚的了解c语言的入口是mian函数。
1.python和c的区别
①语言类型和性能
Python是一种解释型语言,它先将代码(.py)编译成字节码(.pyc),然后由解释器执行,生成机器码,这使得Python的运行速度较慢,但提供了更好的可读性和可维护性。
C语言是一种编译型语言,它需要将源代码直接编译成机器代码,这使得C语言的执行速度快,效率高。
②语法和内存管理
Python的语法简洁,它使用自动垃圾收集器进行内存管理,减少了内存泄漏的可能性。
C语言的语法相对繁琐,需要程序员自行管理内存,如手动进行内存分配和释放。
③应用领域
Python因其高级特性、丰富的库和框架,更适合于Web开发、数据分析、人工智能、科学计算和自动化脚本编写。
C语言因其低级特性和直接访问硬件的能力,通常用于系统级编程、嵌入式系统开发、操作系统、网络协议、高性能计算等领域。
④可移植性和交互性
Python具有良好的跨平台支持,易于学习和使用。
C语言的可移植性较差,需要在不同的平台上进行不同的编译。
2.python的入口节点
c程序的运行从main函数开始,而python则不同,python是解释型语言,不像编译型语言那样先将程序编译成二进制以后再运行,而是逐行解释运行,所有python代码的执行顺序就是从第一行开始,逐行往下,没有统一的入口。
既然是从第一行开始运行,为什么是python没有统一的入口呢?第一行不是入口吗?
答:第一行是入口,是程序执行的入口。而又不像c那样,代码执行在main函数中。举例:
例1.如果我们在.py文件中这样编写
(以下代码都是从第一行开始编写)
print("Hello world!")
运行将打印Hello world!
例2.如果我们在.py文件这样编写
def test():
print("123")
print("456")
运行将打印456
例3.如果我们在.py文件这样编写
def test():
print("123")
test()
print("456")
运行将打印
123
456
例4.如果我们现在有两个文件main.py和text.py
main.py这样编写:
import text #导入text模块
def test():
print("123")
test()
print("456")
_________________________
text.py这样编写:
def text():
print("我是text")
print("789")
_________________________
运行main.py将打印
789
123
456
总结:通过上面几个例子可以得到,python代码执行从第一行开始,逐行解释,即使第一行是导入模块,也会优先执行模块,被导入模块也会从第一行开始执行。
通过☝️可以发现如果没有一个统一的入口节点,不便于管理代码。所有就存在了一个特殊的机制。
在Python中,每个模块都有一个特殊的属性__name__
,这个属性在不同的情况下会有不同的取值。当一个模块被直接执行时,__name__
的值为__main__
;当一个模块被导入时,__name__
的值为模块的名称。
因此,我们可以利用__name__
属性来判断一个模块是被导入还是直接执行。当模块是直接执行时,我们就可以进入 if __name__ == '__main__'的逻辑中。可以这样自定义main函数,起到管理:
__________________________________
def main(): #在这里编写你的程序入口逻辑
print("Hello, World!")
# 当模块被直接执行时,执行main()函数
if __name__ == '__main__':
main()
_________________________________
希望对你有所帮助,加油!