Python模块:如何保持私有符号表私有?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python模块:如何保持私有符号表私有?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1242字,纯文字阅读大概需要2分钟。
内容图文
![Python模块:如何保持私有符号表私有?](/upload/InfoBanner/zyjiaocheng/661/5afe7b8bfcf4471e955a87b10224ac50.jpg)
我有一个模块,我可以在其中导入其他模块(通常是sys或os),当我使用以下命令导入该模块时:
import mymodule
如果我做这样的事情
dir(mymodule)
我不仅获得了模块的子模块,还获得了os等.
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'os', 'sys', 'submodule']
有没有一种方法可以避免将模块导入我的模块中以使其显示在模块的符号表中?是否可以将其设为私有?
解决方法:
在Python中,确实没有“私有”之类的东西.如果您想传达名称是私有的,则在名称上使用前导下划线.有经验的Python开发人员将理解,这些名称实际上不应在模块外部使用.
dir()(实际上是一个调试工具)向您显示模块的全局名称空间,您不必担心在该列表中看到导入的模块;这是完全正常的.使用sys或os或子模块作为全局名称的该模块中的任何代码(在函数或生成器表达式中),都将从该命名空间解析引用.因此,您希望这些名称在那里供您的代码继续工作.
您可以在全局名称空间中创建名称为__all__的序列,以列出您希望其他人从模块中使用的所有名称. dir()不会使用它,但是像mymodule import *和help(mymodule)这样的语法确实遵循该顺序.
您还可以为导入的模块指定“私有”名称:
import os as _os
import sys as _sys
并更新代码中的所有引用以使用这些更新的名称.如果尚未设置__all__,则从mymodule import *和help(mymodule)至少会忽略以下划线开头的名称.
如果只在顶层使用了这些模块,并且您的代码中没有函数要求这些名称作为全局名称存在,则始终可以使用del os或del sys.
内容总结
以上是互联网集市为您收集整理的Python模块:如何保持私有符号表私有?全部内容,希望文章能够帮你解决Python模块:如何保持私有符号表私有?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。