python中模块文件的扩展名不一定是py_python模块和python包有什么区别?

python模块和python包有什么区别?

另请参见:"package"和"module"(其他语言)之间的区别是什么?

我可能错了,但对我来说:模块基本上是一个python文件。包是一个文件夹,其中包含一组模块(python文件)。

要被视为包,该文件夹必须包含一个__init__.py文件。

@LC2817:这是最常见的情况,但不需要从文件系统加载模块,例如,参见from plumbum.cmd import ls实现。

@Giuliopincastelli:在python 3.3+中,命名空间包不使用__init__.py。

社区如何区分python包和用于分发pypi/wheels/etc等python组件的包?这两个词对我来说似乎是"包裹"这个词的不同应用。

任何python文件都是一个模块,其名称是没有.py扩展名的文件的基名称。包是python模块的集合:当模块是单个python文件时,包是包含额外__init__.py文件的python模块的目录,用于区分包与刚好包含一组python脚本的目录。包可以嵌套到任何深度,前提是相应的目录包含自己的__init__.py文件。

模块和包之间的区别似乎仅限于文件系统级别。导入模块或包时,python创建的相应对象始终为module类型。但是,请注意,导入包时,只有该包的__init__.py文件中的变量/函数/类是直接可见的,而不是子包或模块。例如,考虑python标准库中的xml包:它的xml目录包含一个__init__.py文件和四个子目录;子目录etree包含一个__init__.py文件,以及一个ElementTree.py文件。查看当您尝试以交互方式导入包/模块时会发生什么:

>>> import xml

>>> type(xml)

>>> xml.etree.ElementTree

Traceback (most recent call last):

File"", line 1, in

AttributeError: 'module' object has no attribute 'etree'

>>> import x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值