博客
关于我
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/

你可能感兴趣的文章
pku 2400 Supervisor, Supervisee KM求最小权匹配+DFS回溯解集
查看>>
queue队列、deque双端队列和priority_queue优先队列
查看>>
PKUSC2018游记
查看>>
PK项目测试,做产品测试有这4大优势!
查看>>
pl sql 的目录 所在的目录 不能有 小括号,如 Program Files (x86)
查看>>
PL SQLDEVELOPMENT导出数据库脚本
查看>>
Queue
查看>>
PL/SQL Developer中文版下载以及使用图解(绿色版)
查看>>
pl/sql developer乱码,日期格式等问题解决
查看>>
PL/SQL 中的if elsif 练习
查看>>
PL/SQL 存储函数和过程
查看>>
query简单入门到精通细节 - (六)Jquery效果之“淡入与淡出”
查看>>
PL/SQL提示“ORA-01722:无效数字,将无效数字查找出来
查看>>
PL/sql语法单元
查看>>
PL/SQL连接远程服务器数据库,出现ORA-12154: TNS: 无法解析指定的连接标识符。
查看>>
pl/sql锁
查看>>
PL2303 Windows 10 驱动项目常见问题解决方案
查看>>
QueryPerformanceCounter与QueryPerformanceFrequency
查看>>
Plaid.com的监控系统如何实现与9600多家金融机构的集成
查看>>
Plain Stock Prediction:基于RNN的股票价格预测工具
查看>>