每当我from 'x' import 'y'
时,我都想知道哪一个被认为是'模块'什么是'包裹,以及为什么它不相反?
答案 0 :(得分:10)
x可以是包或模块,y是该模块/包中的内容。
模块是.py文件,包是带有__init__.py
文件的文件夹。将包导入为模块时,将导入__init__.py
模块的内容。
答案 1 :(得分:3)
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
那么你会这样做:
import mypackage.mymodule
或
from mypackage.mymodule import myclass