首页 > 编程语言 > 详细

python包(模块包) package

时间:2019-03-10 21:57:56      阅读:169      评论:0      收藏:0      [点我收藏+]

技术分享图片

1、包(模块包) package

  包是将模块以文件夹的组织形式进行分组管理的方法

  作用:
  将一系列模块进行分类管理,有利于防止命名冲突
  可以在需要时加载一个或部分模块,则不是全部模块

技术分享图片
  包示例:
  mypack/
    __init__.py
    menu.py
    games/
      __init__.py
      contra.py
      supermario.py
      tanks.py
    office/
      __init__.py
      excel.py
      word.py
View Code

2、包的导入:
  同模块的导入规则
  import 包名 [as 包别名]
  import 包名.模块名 [as 模块新名]
  import 包名.子包名.模块名 [as 模块新名]

  from 包名 import 模块名 [as 模块新名]
  from 包名.子包名 import 模块名 [as 模块新名]
  from 包名.子包名.模块名 import 属性名 [as 属性新名]

  from 包名 import *
  from 包名.模块名 import *
  ...

 

3、import 语句搜索包的路径的顺序
  1. 搜索程序的运行时路径(当前工作目录)
  2. sys.path提供的路径

4、包的 __init__.py 文件
  __init__.py 是常规包内必须存在的文件
  __init__.py 会在包加载时被自动调用

  __init__.py 内的__all__ 列表
    作用:
      用来记录此包中有哪儿些子包或模块需要导入当用from 包 import * 语句导入模块时,只查找__all__中所有模块或子包

    说明:
      __all__ 列表只对 from xxx import *语句起作用

技术分享图片
__all__ = [contra, tanks]
# 此示列会影响
# from mypack.games import * 导入时,会导入contra 模块
# 和 tanks 模块

print("mypack.games里的__init__.py 被调用")
View Code

5、包的相对导入
  包的相对导入是指包内模块的相互导入

  语法:
    from 相对路径包或模块 import 属性或模块名
    或
    from 相对路径包或模块 import *
  相对路径:
    在 from import 语句和 from import *语句中可以使用相对导入from 和 import 间可以用相对路径
    . 代表当前目录
    .. 代表上一级目录
    ... 代表上二级目录
    .... 以此类推
    注: 相对导入时不能超出包的外部

    # file: mypack/games/contra.py

技术分享图片
    def play():
      print("正在玩魂斗罗!")

    def game_over():
      print("游戏结束!")
      # 用绝对导入
      # from mypack.menu import show_menu

      # 相对导入
      from ..menu import show_menu

      show_menu()
      # 调用tanks里的play函数
      # from .tanks import play
      from ..games.tanks import play
      # 如下是错的, ... 已经超出的包的最外部
      # from ...mypack.game.tanks import play
      play()

    print("魂斗罗模块被加载!!!")
View Code

python包(模块包) package

原文:https://www.cnblogs.com/zhaoyang1997/p/10507428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!