美文网首页
Python中__all__的使用

Python中__all__的使用

作者: luckriver | 来源:发表于2018-09-05 17:43 被阅读0次

Python代码文件test.py如下

def _local_func():
    print 'local'


def test():
    _local_func()

如果执行from test import *,有哪些函数能被导出呢?

按照Python的规则,内部私有函数已_开头,因此将只有test函数能够调用。

>>> from test import *
>>> test()
local
>>> _local_func()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '_local_func' is not defined
>>>

Python中并不存在接口可见性的控制,如果想强行调入私有函数,也是可以的,from test import _local_func。但可以通过__all__属性来控制import *的导出范围。

__all__ = ['test']


def _local_func():
    print 'local'


def test():
    _local_func()


def test1():
    _local_func()

执行结果如下

>>> from test import *
>>> test1()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'test1' is not defined
>>> test()
local
>>>

但是这种控制也仅仅限于import *这种情况。PEP8中规定了__all__需要位于import和函数之间

相关文章

  • [转载]python之__all__

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

  • Python中__all__的使用

    Python代码文件test.py如下 如果执行from test import *,有哪些函数能被导出呢? 按照...

  • Python 学习笔记

    python 中 __all__变量: 它是一个string元素组成的list变量,定义了当你使用from imp...

  • Python 高级用法

    python 中 __all__变量: 它是一个string元素组成的list变量,定义了当你使用from im...

  • Python中的模块与包

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

  • Python中的__all__

    文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. 动机 今天看MXNet的gluo...

  • python里的__init__.py的作用

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

  • python中__all__的思考

    以前一直觉得__all__作用不是很大,后来发现,es6有个export专门设计成有选择暴露。我才觉得__all_...

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

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

  • 阅读bk_monitor

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

网友评论

      本文标题:Python中__all__的使用

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