看了csdn上很多讲解,虽然都很不错,但是我觉得一些细节需要补充一下(小白需要更白的讲解)
1.首先创建两个py文件,名字分别为test.py 和import_test.py,内容分别如下:
print ("I'm the first.")
print(__name__)
if __name__=="__main__":
print ("I'm the second.")
import test
2.很多博客都有提__name__:
- 在直接运行test.py的时候,name 等于 test.py
- 在调用test.py的时候,name 等于 test
- __main__是当前执行文件的名称(包含后缀py)
下图是run test.py的结果,此时直接运行文件,main__和__name__都表示 test.py,此时__name == ‘main’,因此这句话下面的内容也会被执行,就有I’m the second被打印。
在运行import_test.py文件时,相当于import test,此时调用test.py 中的内容,结果如下,此时__name__表示test,和当前文件名称不一致,所以if name == ‘main’:以下的内容不会被打印。
3. 一点值得注意的东西
import_test.py文件中的内容是import test,当然也可以直接在console直接运行import test,结果都一样:
但是,只要被import一次,就不会再重复打印了(看别人的博文时,笔者在这个地方浪费了一些时间,重复的内容只能打印一次,除非文件内容发生了改变)
下面是import相关函数的做法
1.更改test.py 和import_test.py内容如下:
def may(a):
return "123"
def may_t(a):
return "456"
if __name__=="__main__":
print ("I'm the second.")
from test import may
may(1)
may_t(2)
2.逐行运行import_test.py,结果如下,因为我们只加载了may函数
当然可以把from test import may
换成from test import *
,×表示加载test中所有函数,然后就有
在上述知识的基础上,理解博客圆的面积代码就比较简单了
const.py和area.py 的内容分别如下:
PI = 3.14
def main():
print ("PI:", PI)
if __name__ == "__main__":
main()
from const import PI
def calc_round_area(radius):
return PI * (radius ** 2)
def main():
print ("round area: ", calc_round_area(2) )
main()
area.py只调用了const.py中的PI 常数用以计算半径为2的圆面积,最后结果是12.56。