Python “全部”是进口的简写吗?
Python包初始化文件可以有变量Python “全部”是进口的简写吗?,python,python-3.x,Python,Python 3.x,Python包初始化文件可以有变量\uuuuuuuuuuuuuuu,该变量列出了使用时要导入的子包:来自包导入* 这是否与在init文件中写入导入子包名称相同(而不是\uuuuu all\uuuu) 我读过一篇文章,文章说如果包目录中的init.py文件包含一个名为all的列表,它被视为当遇到来自import*的语句时应导入的模块列表。\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>对于单个源文件比对于init\uuuuuuuuuuuuuupy.py文件更有用。在
\uuuuuuuuuuuuuuu
,该变量列出了使用时要导入的子包:来自包导入*
这是否与在init文件中写入导入子包名称相同(而不是\uuuuu all\uuuu
)
我读过一篇文章,文章说如果包目录中的init.py文件包含一个名为all的列表,它被视为当遇到来自import*的语句时应导入的模块列表。
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>对于单个源文件比对于init\uuuuuuuuuuuuuupy.py
文件更有用。在这样的\uuuuu init\uuuuuuu.py
文件中,您通常已经只导入了希望从包外部提供的变量和函数。例如:
package foo
+-- __init__.py
+-- bar.py
+-- baz.py
\uuuu init\uuuuu.py
bar.py
然后在包装之外
import foo
foo.some_method() # works
foo.other_method() # works
foo.hidden_method() # error
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
旨在列出模块中的“。它不会引发次级债的进口-packages@Anthony-一篇在线文章说-如果包目录中的init.py文件包含名为all的列表,它是一个模块列表,当遇到import*中的语句时,应该导入这些模块。这是一个非常直观的答案:)另外,您能告诉我在包的init文件中所有模块都有什么用途吗?与模块中的相同?@variable\uuuuu init\uuuuu.py
实际上与任何其他python源文件一样,只是当您尝试导入整个文件夹时,它是隐式导入的。从技术上讲,您可以将所有代码都写入\uuuu init\uuuuuuuuuupy
文件中,在这种情况下,您可能需要在其中放入一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu
变量,以限制其他人从中导入的内容。与处理任何其他源文件的方式相同。这里的区别是,\uuuuuu init\uuuuuuuuuuuy.py
通常不是这样使用的,因此\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果包目录中的init.py文件包含一个名为all的列表,那么当遇到import*中的语句时,它将被视为应该导入的模块列表。
def some_method():
...
def other_method():
...
def hidden_method():
...
class some_class:
...
__all__ = ['some_method', 'other_method', 'some_class']
import foo
foo.some_method() # works
foo.other_method() # works
foo.hidden_method() # error