当前位置: 动力学知识库 > 问答 > 编程问答 >

namespaces - What's the python __all__ module level variable for?

问题描述:

This question already has an answer here:

  • Can someone explain __all__ in Python?

    8 answers

网友答案:

It has two purposes:

  1. Anybody who reads the source will know what the exposed public API is. It doesn't prevent them from poking around in private declarations, but does provide a good warning not to.

  2. When using from mod import *, only names listed in __all__ will be imported. This is not as important, in my opinion, because importing everything is a really bad idea.

网友答案:

http://docs.python.org/tutorial/modules.html#importing-from-a-package

Now what happens when the user writes from sound.effects import *? Ideally, one would hope that this somehow goes out to the filesystem, finds which submodules are present in the package, and imports them all. This could take a long time and importing sub-modules might have unwanted side-effects that should only happen when the sub-module is explicitly imported.

The only solution is for the package author to provide an explicit index of the package. The import statement uses the following convention: if a package’s __init__.py code defines a list named __all__, it is taken to be the list of module names that should be imported when from package import * is encountered. It is up to the package author to keep this list up-to-date when a new version of the package is released. Package authors may also decide not to support it, if they don’t see a use for importing * from their package.

网友答案:

It controls what you get pulled into your namepsace when you

from blah import *

See Importing * from a Package

分享给朋友:
您可能感兴趣的文章:
随机阅读: