博客
关于我
python中为什么要有if __name__ == '__main__'?
阅读量:321 次
发布时间:2019-03-03

本文共 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/

你可能感兴趣的文章
Objective-C实现roman numerals罗马数字算法(附完整源码)
查看>>
Objective-C实现Romberg算法(附完整源码)
查看>>
Objective-C实现ROT13密码算法(附完整源码)
查看>>
Objective-C实现rotate matrix旋转矩阵算法(附完整源码)
查看>>
Objective-C实现round robin循环赛算法(附完整源码)
查看>>
Objective-C实现RRT路径搜索(附完整源码)
查看>>
Objective-C实现RS485通信接收数据(附完整源码)
查看>>
Objective-C实现rsa 密钥生成器算法(附完整源码)
查看>>
Objective-C实现RSA密码算法(附完整源码)
查看>>
Objective-C实现RSA素因子算法(附完整源码)
查看>>
Objective-C实现runge kutta龙格-库塔法算法(附完整源码)
查看>>
Objective-C实现Sarsa算法(附完整源码)
查看>>
Objective-C实现SCC的Kosaraju算法(附完整源码)
查看>>
Objective-C实现scoring functions评分函数算法(附完整源码)
查看>>
Objective-C实现scoring评分算法(附完整源码)
查看>>
Objective-C实现searching in sorted matrix在排序矩阵中搜索算法(附完整源码)
查看>>
Objective-C实现Secant method割线法算法(附完整源码)
查看>>
Objective-C实现segment tree段树算法(附完整源码)
查看>>
Objective-C实现segmented sieve分段筛算法(附完整源码)
查看>>
Objective-C实现selection sort选择排序算法(附完整源码)
查看>>