点击上方“Python3X”,选择“置顶或者星标”
第一时间收到精彩推送!
Python Every Day, 第 19 天
理解__name__ == '__main__' 之前有必要解释一下 __name__
__name__
如下:
# 导入child_temp模块import child_temp# 如果模块被导入,则输出导入模块的名称,即child_temoprint(child_temp.__name__)# 如果直接运行则 输出__main__print(__name__)
import child_temp
# 如果模块被导入,则输出导入模块的名称,即child_temo
print(child_temp.__name__)
# 如果直接运行则 输出__main__
print(__name__)
__name__ == '__main__'的作用
# child_temp.pyname = 'Tom'def get_name(): print(f'my name is {name}')get_name()print('当前模块名 __name__ 为 :', __name__)
name = 'Tom'
def get_name():
print(f'my name is {name}')
get_name()
print('当前模块名 __name__ 为 :', __name__)
my name is Tom当前模块名 __name__ 为 : __main__
当前模块名 __name__ 为 : __main__
# temp.py# 导入child_temp模块from child_temp import name# 打印child_temp.py文件中的name 即 Tomprint(name)
# 导入child_temp模块
from child_temp import name
# 打印child_temp.py文件中的name 即 Tom
print(name)
输出结果为:
my name is Tom当前模块名 __name__ 为 : child_tempTom
当前模块名 __name__ 为 : child_temp
Tom
问题就出现在这里了,我只想打印Tom这个名字,但是却把child_temp.py中的两个print也打印出来了。
值得注意的是,在执行temp.py的时候 当前模块名__name__ 从__main__ 变成了child_temp。
# child_temp.pyname = 'Tom'def get_name(): print(f'my name is {name}')if __name__ == '__main__': get_name() print('当前模块名 __name__ 为 :', __name__)
name = 'Tom'
def get_name():
print(f'my name is {name}')
if __name__ == '__main__':
get_name()
print('当前模块名 __name__ 为 :', __name__)
总结:
可以避免代码的重复运行,提高代码的健壮性。
往期Python Every Day
[每日一题]3、Python实现删除list中重复元素的几种方式
[每日一题]2、Python中的类的定义和装饰器@classmethod与@staticmethod
感谢您的阅读