python模块 init py_使用__init__.py导入Python子模块

小编典典您可能已经了解,当您导入 模块时,解释器会创建一个新的名称空间,并使用新的名称空间作为本地和全局名称空间来执行该模块的代码。代码完成执行后,模块名称(或任何子as句中提供的名称)将绑定到刚在导入名称空间中创建并记录在其__name__in中的模块对象sys.modules。package.subpackage.module导入诸如的限定名称时,名字(package)导入本地名称空间,然后s...
摘要由CSDN通过智能技术生成

小编典典

您可能已经了解,当您导入 模块时

,解释器会创建一个新的名称空间,并使用新的名称空间作为本地和全局名称空间来执行该模块的代码。代码完成执行后,模块名称(或任何子as句中提供的名称)将绑定到刚在导入名称空间中创建并记录在其__name__in中的模块对象sys.modules。

package.subpackage.module导入诸如的限定名称时,名字(package)导入本地名称空间,然后subpackage导入package的名称空间,最后module导入package.subpackage的名称空间。使用from

... import ... as

...进行导入的操作顺序相同,但是导入的对象直接绑定到导入模块名称空间中的名称。包名称未绑定在本地名称空间中这一事实并不意味着它尚未导入(如对的检查sys.modules所示)。

__init__.py软件包中的in与模块.py文件具有相同的功能。具有结构的 包

被写为目录,其中还可以包含任何sub_packages的模块(常规.py文件)和子目录(也包含__init__.py文件)。导入程序包时,将创建一个新的名称空间,并__init__.py使用该名称空间作为本地和全局名称空间来执行程序包的名称空间。因此,为回答您的问题,我们可以通过省略顶层软件包来删除文件存储,而顶层软件包test.py在程序运行时将永远不会被其考虑。然后看起来像这样:

test.py

subpackage/

__init__.py

hello_world.py

现在,subpackage不再是子包,因为我们已删除了不相关的包含包。专注于为什么do_something未定义名称可能会有所帮助。test.py不包含任何导

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值