老师入口函数到底干什么用的

老师入口函数到底干什么用的

老师这个入口函数我还是理解不了 我看后面老师讲课 也都不需要这个函数啊

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,如同学所说,不是所有的python文件都一定要写入口函数的,if __name__ == '__main__' 就相当于是 Python 模拟的程序入口。

__name__是模块的名称,当.py文件被直接运行时,if __name__ == '__main__'之后的代码块将被运行;当.py文件以模块形式被导入时,if _name_ == '__main__'之后的代码块不被运行。

例如:

1、我们有一个 test.py 文件,内容如下:

PI = 3.14
def main():
   print("PI:", PI)
main()
# 程序运行结果 :PI: 3.14

2、我们还有一个 area.py 文件,用于计算圆的面积,该文件里边需要用到 test.py 文件中的 PI 变量,那么我们从 test.py 中把 PI 变量导入到 area.py 中

from test import PI
def calc_round_area(radius):
   return PI * (radius ** 2)

def main():
   print("round area: ", calc_round_area(2))

main()
# 程序运行结果:
# PI: 3.14
# round area:  12.56

可以看到,test中的 main 函数也被运行了,实际上我们是不希望它被运行。

3、这时,if __name__ == '__main__' 就派上了用场。把 test.py 改一下:

PI = 3.14
def main():
   print("PI:", PI)
   
if __name__ == "__main__":
  main()
# 程序运行结果 :PI: 3.14

然后再运行 area.py,输出如下:round area:  12.56

由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。

加油,祝学习愉快~~~~

  • Alicias #1
    请问老师: test.py PI = 3.14 def main(): print("PI:", PI) main() from test import PI 不是单单只导入了test.py中的PI变量吗?为什么test.py中的main函数也执行了?
    2020-11-09 23:49:09
  • 同学你好,由于没有设置程序入口函数,当在test.py中添加if __name__ == "__main__"语句后,test.py文件以模块形式被导入时,test.py中的main函数就不会被执行了
    2020-11-10 17:48:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师