关于一个问题

来源:2-1 实战自定义包(1)

Kepler_

2019-12-08 14:19:53

http://img.mukewang.com/climg/5dec948309a81b0b03540035.jpg

老师您好,我想问一下这个__name__函数是什么意思,以及后面的"__main__"这个是什么意思,能不能都说明一下,有一些不明白,为什么是放在if判断语句里面,最好是能够举一些例子,不然很难明白,而且特别是这个语句的作用是什么,我都想了解一下,谢谢老师啦,嘻嘻~

写回答

1回答

时间,

2019-12-08

同学,你好。__name__是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。

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

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

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

现在,我们有一个 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 函数也被运行了,实际上我们是不希望它被运行,提供 main 也只是为了对常量定义进行下测试。这时,if __name__ == '__main__' 就派上了用场。把 test.py 改一下:

PI = 3.14
def main():
    print("PI:", PI)
   
if __name__ == "__main__":
   main()

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

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

同学可根据上述例子及文字说明进行理解。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~

0

0 学习 · 8160 问题

查看课程