2024-05-14 00:59:16 发布
网友
我是学Python的初学者,请别烦我
我刚刚研究了Python中的模块是类和函数的集合;相反,包只是一种在目录和子目录中标识模块的方法。因此,Python中的包不应该包含任何类和函数,NumPy应该称为“module”。我说的对吗
事实上,NumPy的官方文件说:
NumPy is the fundamental package for scientific computing with Python
这些术语通常使用得很模糊,但理论上是这样的——模块是类和函数的集合,而包是(一个或多个)模块的集合。然而,很少有包只包含一个模块而没有支持代码的情况,因为任何包都可能希望提供__version__、__all__等,或者子包提供提供与导入相关的帮助函数的方法等
__version__
__all__
所以numpy肯定是一个包,因为它包含几个子包(doc、random、fft等等)。当然,它也是一个模块,因为它有“顶级”类和函数(例如numpy.array)
numpy
doc
random
fft
numpy.array
正如其他答案所表明的,numpy在技术上是一个包(一个可导入事物的目录),但在本例中,我认为您引用的句子使用的是另一种意义上的术语:包是您可以安装的东西。PyPI是Python包的索引,pip代表pip安装包。PyPI和pip都可以处理单文件模块。在本例中,包是可安装到Python环境中的任何内容的通用术语
NumPy是一个包。包由文件__init__.py表示:
__init__.py
>>> import numpy as np >>> np <module 'numpy' from '.../site-packages/numpy/__init__.py'>
当您查看这个相当长的文件时,会发现许多导入:
from . import core from .core import * from . import compat from . import lib from .lib import *
因此,直接导入__init__.py的所有名称在包级别都可用:
>>> np.array <function numpy.core.multiarray.array>
但是正如您所看到的,函数array实际上位于包目录层次结构的深层。由于总是键入numpy.core.multiarray.array是相当烦人的,因此将此函数导入__init__.py非常有意义,因为现在您可以键入np.array
array
numpy.core.multiarray.array
np.array
这些术语通常使用得很模糊,但理论上是这样的——模块是类和函数的集合,而包是(一个或多个)模块的集合。然而,很少有包只包含一个模块而没有支持代码的情况,因为任何包都可能希望提供
__version__
、__all__
等,或者子包提供提供与导入相关的帮助函数的方法等所以
numpy
肯定是一个包,因为它包含几个子包(doc
、random
、fft
等等)。当然,它也是一个模块,因为它有“顶级”类和函数(例如numpy.array
)正如其他答案所表明的,numpy在技术上是一个包(一个可导入事物的目录),但在本例中,我认为您引用的句子使用的是另一种意义上的术语:包是您可以安装的东西。PyPI是Python包的索引,pip代表pip安装包。PyPI和pip都可以处理单文件模块。在本例中,包是可安装到Python环境中的任何内容的通用术语
NumPy是一个包。包由文件
__init__.py
表示:当您查看这个相当长的文件时,会发现许多导入:
因此,直接导入
__init__.py
的所有名称在包级别都可用:但是正如您所看到的,函数
array
实际上位于包目录层次结构的深层。由于总是键入numpy.core.multiarray.array
是相当烦人的,因此将此函数导入__init__.py
非常有意义,因为现在您可以键入np.array
相关问题 更多 >
编程相关推荐