美文网首页
Python __all__ 用法

Python __all__ 用法

作者: Paycation | 来源:发表于2018-05-23 23:01 被阅读15次

在读 Django 源码时发现了这个 __all__:
https://github.com/django/django/blob/master/django/http/__init__.py

__all__ 是一个 list,里面装着字符串形式的变量名。
举个例子来看它的用法:
在同一目录下的两个 .py 文件,一个是 foo.py,一个是 bar.py。

# foo.py
a = 5
b = 3

我们运行 bar.py

# bar.py
from foo import *
print(a)
print(b)
输出:
5
3

现在改写一下 foo.py

# foo.py
a = 5
b = 3
__all__ = ['a']

再次运行 bar.py 则会报错,因为 b 无法被导出了。
NameError: name 'b' is not defined
但是这不是绝对的,因为 __all__ 只能限制 from module import *这种形式,因此可以加一行:

from foo import b

这样就不会报错了。

在 python 的世界里,没有真正的私有对象。
all 仅对 from ... import * 起作用。

相关文章

  • Python __all__ 用法

    在读 Django 源码时发现了这个 __all__:https://github.com/django/djan...

  • python的学习小结

    __all__的用法 常常看源码发现__init__.py文件中有__all__,关于它的用法举个栗子: __al...

  • Python __all__变量用法

    Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__...

  • [转载]python之__all__

    [转载]使用__all__暴露接口 在Python中我们可以使用__all__暴露出模块级别的接口: 这样在其他模...

  • python进阶-特殊变量和属性

    本文主要记录了python中一些特殊变量或者属性的说明,比如__all__等。 __all__ 先看代码,假设有两...

  • 阅读bk_monitor

    Python标准模块--functools __all__的作用 https://www.cnblogs.com/...

  • python 中 __all__ 的含义与用法

    无论是在.py文件中,或者在包package中的__init__.py文件中都是公开声明了暴露的接口方法__all...

  • python里的__init__.py的作用

    1. Python中package的标识,不能删除 2. 定义__all__用来模糊导入 3. 编写Python代...

  • Python中的模块与包

    目标 了解模块 导入模块 制作模块 __all__ 包的使用方法 一. 模块 Python 模块(Module),...

  • python __all__ 含义

    1. 背景 最近看了一些代码,发现有些python文件在import 下面声明 __all__,查阅资料了解其含义...

网友评论

      本文标题:Python __all__ 用法

      本文链接:https://www.haomeiwen.com/subject/zhndjftx.html