37,719
社区成员
发帖
与我相关
我的任务
分享
#--encoding:gbk--
def HaveFun():
if __name__ == '__main__':
print('I am in my domain,my name is %s' % __name__)
else:
print('Someone else calls me!,my name is %s' % __name__)
HaveFun()
print(__name__)
#--encoding:gbk--
print(__name__)
import test
print(__name__)
test.HaveFun()
print(__name__)
# 此处__name___应该就是打印当前python的文件名,所以这里就打印了 __main__
#
print("*******************************zanting1***********************************")
import test
# 这段代码打印的内容如下:
# Someone else calls me!,my name is test
# test
# 所以猜测,当import test 的时候,就有点类似于把里面的代码拷贝过来.
# 所以test里面的HaveFun() 会打印第一行数据, Someone else calls me!,my name is test
# 随后,执行print(__name__) 这段
# 就会打印test,因为这段代码是在test的目录下,而不是在main目录下。
print("*******************************zanting2***********************************")
print(__name__)
# 打印当前的文件名,也就是main.
# 至于前后为什么加两个下划线,可能是pytho的特性吧。
print("*******************************zanting3***********************************")
test.HaveFun()
# 此处依然打印的是test,可能因为用test进行的调用,所以他依然认为自己的名字是test
# 而不是__main___
# 不知道有没有办法让他认为当前的文件名是main呢。
# 刚刚测试了下,如果不用test调用havaFun,程序会报错。
print("*******************************zanting4***********************************")
HavaFun() #error
#
# 输出结果如下:
#
"""
D:\py\First\venv\Scripts\python.exe D:/py/First/venv/main.py
__main__
*******************************zanting1***********************************
Someone else calls me!,my name is test
test
*******************************zanting2***********************************
__main__
*******************************zanting3***********************************
Someone else calls me!,my name is test
*******************************zanting4***********************************
Process finished with exit code 0
"""