前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 的 __ name __ 变量及其应用

Python 的 __ name __ 变量及其应用

作者头像
测试开发囤货
发布2023-05-25 17:21:29
1750
发布2023-05-25 17:21:29
举报
文章被收录于专栏:测试开发囤货测试开发囤货
Python 的 __ name __ 变量及其应用

在 Python 中,每个模块(module)都有内置的 __name__ 变量,它的值取决于模块的使用方式。当模块被直接执行时,__name__ 的值是 __main__。当模块被导入时,__name__ 的值是模块的名字。

self.scope['__name__'] = '__main__'

例如,在模块 module1.py 中有:

代码语言:javascript
复制
print(__name__)

如果直接执行 python module1.py,输出会是:

代码语言:javascript
复制
__main__

如果在其他模块 module2.pyimport module1,输出会是:

代码语言:javascript
复制
module1

利用这个特点,我们可以在模块中写一段代码来判断模块是被直接执行还是被导入,比如:

代码语言:javascript
复制
python
if __name__ == '__main__':
    # 直接执行代码
else:
    # 被导入时执行代码

这个技巧常常用于编写可以导入的脚本,在导入时提供函数和变量,在直接执行时执行主程序逻辑。例如,我们编写一个模块 module_demo.py:

代码语言:javascript
复制
def func():
    print('This is a function')

if __name__ == '__main__':
    print('Executed when invoked directly') 
else:
    print('Executed when imported')

如果直接执行这个模块,输出会是:

代码语言:javascript
复制
Executed when invoked directly

如果在其他模块中导入这个模块,输出会是:

代码语言:javascript
复制
Executed when imported

这个模块既可以被直接执行,也可以被导入使用。再举一个实际例子,我们开发一个命令行工具,一般会编写一个入口模块,比如 tool.py:

代码语言:javascript
复制
def main():
    print('Tool started!')

if __name__ == '__main__':
    main()

我们还可以编写其他模块导入和使用 tool.py 中的功能,同时当直接执行 tool.py 时,入口函数 main() 被调用,命令行工具启动。__name__ 这个变量为我们实现模块的双重用途提供了可能,是 Python 中一个简单但非常有用的设计。熟练使用这个技巧可以让我们的代码更 modular, reusable 和 flexible。

总结

总之,记住:__name__ == '__main__' 表示模块被直接执行,否则模块被导入。运用这个技巧,我们可以编写既可以导入也可以直接执行的 Python 模块。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发囤货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档