首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -考虑到官方定义Numpy应该是一个模块

Python -考虑到官方定义Numpy应该是一个模块
EN

Stack Overflow用户
提问于 2018-02-03 11:52:10
回答 3查看 392关注 0票数 1

作为初学者,我正在学习Python,请不要对我发火。

我刚刚研究了Python中的模块是类和函数的集合;相反,包只是识别目录和子目录中模块的一种方法。因此,Python中的包不应该包含任何类和函数,NumPy应该包含calle d“模块”。我说得对吗?

事实上,NumPy的官方医生说:

NumPy是使用Python进行科学计算的基本包。

EN

回答 3

Stack Overflow用户

发布于 2018-02-03 12:31:55

NumPy是一个包。包由文件__init__.py表示。

代码语言:javascript
运行
复制
>>> import numpy as np
>>> np
<module 'numpy' from '.../site-packages/numpy/__init__.py'>

当您查看这个很长的文件时,您会发现大量的导入:

代码语言:javascript
运行
复制
from . import core
from .core import *
from . import compat
from . import lib
from .lib import *

因此,直接导入到__init__.py的所有名称都可以在包级别上使用:

代码语言:javascript
运行
复制
>>> np.array
<function numpy.core.multiarray.array>

但是如您所见,array函数实际上位于包目录层次结构的深处。由于总是键入numpy.core.multiarray.array非常累人,所以将这个函数导入__init__.py非常有意义,因为现在您可以输入np.array

票数 3
EN

Stack Overflow用户

发布于 2018-02-03 12:28:16

这些术语通常使用非常含糊,但在理论上,是的-模块是类和函数的集合,而包是(一个或多个)模块的集合。但是,很少有包只包含模块而不包含支持代码的情况--因为任何包都可能希望提供例如__version____all__等,或者使用子包提供提供与导入相关的辅助函数的方法。

所以numpy肯定是一个包,因为它包含了几个子包(docrandomfft等)。当然,它也是一个模块,因为它有“顶级”类和函数(例如numpy.array)。

票数 1
EN

Stack Overflow用户

发布于 2018-02-03 13:00:10

正如其他答案所表明的那样,numpy在技术上是一个包(一个重要事物目录),但在这个例子中,我认为您引用的句子在另一个意义上使用了这个术语:包是一个您可以安装的东西。PyPI是Python包索引,pip代表Pip安装Packages。PyPI和pip都可以处理单文件模块。在本例中,包是Python环境中可安装的任何东西的通用术语。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48597046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档