本文共 807 字,大约阅读时间需要 2 分钟。
if __name__ == '__main__' 是 Python 中一个常见的技术,用于控制模块或脚本的执行方式。它的作用是检测当前脚本是通过命令直接运行,还是作为其他脚本的模块被导入。在前者情况下,代码会执行;在后者情况下,由于 __name__ 不等于 '__main__',该语句的条件不满足,代码不会执行。
例如,在 a.py 中,如果你有以下代码:
def plus(a, b): return a + bres = plus(1, 2)print(res)
当直接运行 a.py 时,__name__ 会被设置为 '__main__',因此代码会正常执行,输出 3。
而在 b.py 中,你可以这样导入并使用 plus 函数:
from a import plusres = plus(2, 3)print(res)
在导入过程中,Python 会自动执行 a.py 中的代码,导致 res = plus(1, 2) 和 print(res) 也会被执行,结果会是 3a5。
为了避免这种情况,可以在 a.py 中添加 if __name__ == '__main__' 这一判断:
def plus(a, b): return a + bif __name__ == '__main__': res = plus(1, 2) print(res)
这样,当 a.py 被直接运行时,__name__ 为 '__main__',代码正常执行;但当 a.py 被作为模块被导入(如在 b.py 中被导入)时,__name__ 不为 '__main__',if 语句的条件不成立,plus 函数不会被执行,避免了不必要的操作。
通过这种方式,可以确保模块被导入时不会执行其代码,只有在主程序运行时才执行。这种方法非常有用,特别是在开发可重用模块时,可以避免因导入操作触发副作用。
转载地址:http://bodq.baihongyu.com/