我使用
今天我开始使用
例如
在
__init__.py
在执行from myprojects.something import blabla
时运行检查。今天我开始使用
pyzmq
,想要查看其背后的运行机制。于是我浏览了github上的代码,发现(对我来说)一些奇怪的__init__.py
用法,我自己也无法解释。例如
zmq/core/__init__.py
。在zmq.core.__all__
中添加__all__
的值为zmq.core.constants、zmq.core.error、zmq.core.message等
有什么意义呢?在
zmq/__init__.py
中,我在结尾处看到:__all__ = ['get_includes'] + core.__all__
get_includes
是一个函数,它基本上返回一个列表,其中包括模块的目录和父目录中utils目录。
那么这有什么意义呢?__init.py__
通过这样做实现了什么?
from bla import ble
的原因是你可以控制你的命名空间,这意味着你可以决定将哪些符号添加到你的命名空间中。 - Pablo#include
可能会与已定义的函数、变量等发生冲突,因此应该只导入您真正需要的符号。我曾经在Python文档中读到过使用from bla import *
不是一个好习惯,如果是这样的话,那么为什么还要定义__all__
呢?当使用import *
时,__all__ = ['get_includes'] + core.__all__
如何被评估? - Pablozmq.REQ
,即使REQ
已经在core.constants
中定义了。感谢你的分享。 - Pablo