Python引用多层目录结构的包里的Module

  Python使用import关键字可以引入自定义的包,对于多层目录结构的包需要专门的处理方式才能让import语句找到。

  比如一个moudle的实现文件"some.py"位于parent文件夹下的child文件夹下,需要在每一个文件夹下放一个“__init__.py”文件(空的就行)。

  目录层次如下:

-parent
  --__init__.py
  --child  
    --__init__.py
    --some.py


### Python 包的引用规则 在 Python 中,包是一种用于组织模块的方式。通过将多个模块组合到一起并形成层次结构,开发者能够更方便地管理大型项目中的代码文件。以下是有关 Python引用的一些核心规则: #### 1. 使用 `import` 导入整个包 当需要导入一个完整的包时,可以直接使用 `import package_name` 的形式。这种方式会加载指定的包及其初始化脚本(通常是 `__init__.py` 文件)。 例如: ```python import math print(math.pi) # 访问 pi 常量 ``` 此方法适用于只需要访问包的部分功能的情况[^1]。 #### 2. 使用 `from ... import` 导入特定对象 如果仅需从某个包中引入具体的函数、类或变量,则可以采用 `from package.module import object` 形式。这种方法减少了命名空间污染,并使代码更加简洁明了。例如: ```python from datetime import date today = date.today() print(today) ``` 这种做法遵循了 PEP8 编码规范推荐的最佳实践[^2]。 #### 3. 避免一次性导入过多内容 虽然技术上允许一次导入多个库,但这并不符合良好的编程习惯。比如下面的例子就不被提倡: ```python import os, sys, re ``` 相反,应该单独分行书写每一个独立的导入语句以便于阅读维护: ```python import os import sys import re ``` #### 4. 处理相对路径下的子模块导入 对于复杂的多层目录结构来说,可能需要用到相对导入来解决依赖关系问题。绝对导入总是优先考虑因为它们更具可移植性和清晰度;然而,在某些特殊场景下也可以适当运用相对导入语法(`.`表示当前目录,`..`代表上级目录),如下所示: ```python # 绝对导入方式 from mypackage.submodule import MyClass # 或者相对导入方式 from .submodule import MyClass ``` 以上就是基于官方文档总结出来的几个主要方面关于如何正确有效地进行 python引用操作的信息[^1]。 ### 示例代码展示 这里给出一段综合应用上述原则的小例子供参考学习: ```python # 正确示范:按照标准分开每条指令 import logging logger = logging.getLogger(__name__) def setup_logger(): handler = logging.StreamHandler() # 只取 StreamHandler 类型实例化即可 formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.DEBUG) if __name__ == '__main__': setup_logger() logger.info('This is an informational message.') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值