前后端知识库 前后端知识库
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
  • Sanic

  • Python

    • Python 的动态类型介绍
    • 数字类型
    • Set类型
    • 字符串
    • 列表
    • 元组
    • 通用序列
    • 字典
    • 文件
    • 语句和语法
    • 赋值语句
    • 打印
    • if语句
    • loop循环
    • 迭代器和生成器
    • 文档
    • 函数
    • 作用域
    • 参数
    • 函数的高级特性
    • 模块
    • 模块包
    • 模块高级用法
    • 类 class
    • Python命名空间
    • 运算符重载
    • 类的设计模式
    • 类的高级主题
    • 异常
    • 异常对象
    • Unicode与字节串
    • 管理属性
    • 装饰器
    • 元类
    • 执行细节
  • backend
  • Python
devin
2023-09-09

模块包

# 模块包

1.import时,也可以指定目录。目录称为包,这类的导入称为包导入。

  • 包导入是将计算机上的目录变成另一个 Python 命名空间,它的属性对应于目录中包含的子目录和模块文件

  • 包导入的语法:

    import dir1.dir2.modname
    from dir1.dir2.modname import x
    
    1
    2

    包导入

  • 包导入语句的路径中,每个目录内部必须要有__init__.py这个文件。否则包导入会失败 _ __init__.py就像普通模块文件,它可以为空的 _ Python 首次导入某个目录时,会自动执行该目录下__init__.py文件的所有程序代码 _ import dir1.dir2.modname包导入后,每个目录名都成为模块对象 (模块对象的命名空间由该目录下的__init__.py中所有的全局变量定义 (包含显式定义和隐式定义)决定) _ __init__.py中的全局变量称为对应目录包的属性

    init.py

    2.任何已导入的目录包也可以用reload重新加载,来强制该目录包重新加载

    reload一个目录包的用法与细节与reload一个模块相同

    reload包

    3.包与import使用时输入字数较长,每次使用时需要输入完整包路径。可以用 from 语句来避免
    import包与from包区别

    4.包相对导入:from语句可以用.与..:

  from . import modname1 #modname1与本模块在同一包中(即与本文件在同一目录下)
  from .modname1 import name #modname1与本模块在同一包中(即与本文件在同一目录下)
  from .. import modname2 #modname2在本模块的父目录中(即在本文件上层)
1
2
3

Python2 中,import modname会优先在本模块所在目录下加载modname以执行相对导入。 因此局部的模块可能会因此屏蔽sys.path上的另一个模块
要想启用相对导入功能,使用from __future__ import absolute_import

  • Python3 中,没有点号的导入均为绝对导入。import总是优先在包外查找模块
    包相对导入
编辑 (opens new window)
上次更新: 2023/09/09, 12:09:00
模块
模块高级用法

← 模块 模块高级用法→

Theme by Vdoing | Copyright © 2023-2023 devin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式