美文网首页
`__all__` 的使用

`__all__` 的使用

作者: 四月白绵羊 | 来源:发表于2020-07-19 21:19 被阅读0次

__all__ 的使用并不会改变一个package 所暴露的方法和变量,例如在grocery package中,有以下的 __init__.py 文件:

def get_bread():
    print('A bread.')

def get_coffee():
    print('A cup of coffee.')

def get_milk():
    print('Some milk.')

__all__ = ['get_bread', 'get_coffee']

你依然可以使用 from grocery import get_milk 获取 get_milk 方法.
__all__ 的唯一影响是当你使用 wild import 的时候:from grocery import *,只会导入 __all__ 数组中包含的内容。换言之,使用 from grocery import * 时,get_milk 是不会被引入的。

同时也要注意,不要在 __all__ 数组中包含没有定义的函数或变量。如果在 __all__ 数组中包含没有定义的函数或变量,使用 import grocery 并不会出错(因为只会导入定义了的方法和变量)。但是使用 from grocery import * 时会出现未定义的错误。

所以 __all__ 和python中的私有方法实现一样,都是约定俗成的协议。约定好了 __all__ 中声明的内容就是 public api

相关文章

  • [转载]python之__all__

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

  • `__all__` 的使用

    __all__ 的使用并不会改变一个package 所暴露的方法和变量,例如在grocery package中,有...

  • 关于导包和模块

    Tips使用from XX import * ,如果被导入文件中有__all__=['one','two'] ,这...

  • Python中的模块与包

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

  • Python中__all__的使用

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

  • python的学习小结

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

  • Python 学习笔记

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

  • Python 高级用法

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

  • day23模块

    模块:导入的两种方式 不加__all__的情况: 加__all__的情况: ·总结:如果一个文件中有__all__...

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

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

网友评论

      本文标题:`__all__` 的使用

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