知行编程网知行编程网  2022-10-11 15:00 知行编程网 隐藏边栏  76 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python没有main函数吗的相关知识,包括python函数调用,以及python中main函数是什么意思这些编程知识,希望对大家有参考作用。

python有main函数吗?

相信很多python初学者在看代码的时候都会先找main()方法,然后从main往下看。但实际上,python中并没有你理解的“main()”方法。 if __name__ == "__main__":可以看成是一个python程序的入口,就像java中的main()方法一样,但并不完全正确。

其实python程序是从上到下逐行运行的。在.py文件中,除def后定义的函数外的代码将被视为“main”方法的内容,自上而下执行。如果你只是写一个很棒的“hello world”,如果你不想写一个函数,你可以只打印('hello world'),它是一个“程序”,不需要所谓的“main”方法入口。当然,如果是测试函数,需要在.py文件中写上if __name__ == "__main__",然后调用函数。例如,以下 hello.py 文件:

print("first") 
 
def sayHello():
    str = "hello"
    print(str);
    print(__name__+'from hello.sayhello()') 
 
if __name__ == "__main__":
    print ('This is main of module "hello.py"')
    sayHello()
    print(__name__+'from hello.main')

运行结果:

first
This is main of module "hello.py"
hello
__main__ from hello.sayhello()
__main__ from hello.main

明白我的意思了吗? print的第一行先执行,然后执行“entry”中的东西。

话说回来,if __name__ == "__main__"这句话是个什么意思呢?

__name__ 实际上是一个内置属性,指示当前 py 文件如何调用该方法。上面的例子运行时,无论整个程序中的__name__属性在哪里,其值都是__main__,当hello.py文件作为一个模块导入到另一个.py文件中(即导入),比如world.py,而你在运行world.py,hello.py中的__name__属性会变成hello,所谓的entry不会被执行,因为if判断失败。

所以if语句的判断成功虚拟了一个main()方法。

说起来,phthon是逐行执行的,所以它在读取import hello的时候,也会执行hello.py,比如运行如下world.py文件:

import hello  #上一个例子的hello.py
 
if __name__ == "__main__":
    print ('This is main of module "world.py"')
    hello.sayHello()
    print(__name__)

执行结果:

first
This is main of module "world.py"
hello
hellofrom hello.sayhello()
__main__

可以看到直接执行了hello.py中的第一行print('first'),hello.py中__name__的输出也是hello,world.py中name的输出是__main__。

总结:适应python没有main()方法的特点。所谓入口其实就是一个if条件语句。如果判断成功,会执行一些代码,如果失败则跳过。在其他语言如java中并没有具体的内置函数来识别main()方法的入口,并在main()方法中从上到下执行。

python学习网,免费的在线学习
,欢迎关注!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享