模块与包装?

Spa*_*det 4 python module package

每当我这样做时,from 'x' import 'y'我想知道哪一个被认为是"模块",哪个是'包',为什么它不是相反?

gec*_*kos 10

x可以是包或模块,y是该模块/包内的东西.

模块是.py文件,包是带文件的__init__.py文件夹.将包导入为模块时,将导入模块的内容__init__.py.

  • 包不一定有`__init __.py`文件,模块不一定是`.py`文件. (5认同)
  • 你不需要Python 3中的`__init __.py`文件和模块,因为导入钩子是发明的,但这些都是上述约定的例外.以上99%的时间适用. (2认同)

Spa*_*det 5

Python 模块只是一个 Python 源文件,它可以公开类、函数和全局变量。

从另一个 Python 源文件导入时,文件名被视为命名空间。

Python 包只是 Python 模块的目录。

例如,想象以下目录树/usr/lib/python/site-packages

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py
Run Code Online (Sandbox Code Playgroud)

那么你会这样做:

import mypackage.mymodule
Run Code Online (Sandbox Code Playgroud)

或者

from mypackage.mymodule import myclass
Run Code Online (Sandbox Code Playgroud)