Python_包

1.包的概念

包是一个分层的文件目录结构,它定义了一个由模块及子包和子包下的子包等组成的Python的应用环境。

当文件夹被当作包使用时,文件夹中需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串 。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值, __all__是在from package.module import *这语句使用的,表示全部导入定义过的模块

2.包的目录结构

例:

test/
  __init__.py
  common_util.py
  test01/
      __init__.py
      Pots.py
  test02/
      __init__.py
      Gets.py  

导入方式:

①----from-import导入包, 然后使用属性/点操作符向下引用

A.from test import test01

   test01.Posts.add(a,b)

B.from test.test01 import Posts

   Posts.add(a,b)

C.from test.test01.Posts import add

   add(a,b)

②----import 导入

import test.test01.Posts

test.test01.Posts.add()

3.包的使用

①在一个包下,可以通过__init__.py来限定可执行的模块

例:包的目录

建立一个testdemo的目录,目录中有3个文件: a.py、b.py、__init__.py

test02.py

from testdemo import *

print(a.x)
print(a.add(2,8))

执行结果:

1
10

from testdemo1122 import *

print(b.x)

执行结果:#__init__.py文件 __all__定义了可执行的模块仅有a模块

Traceback (most recent call last):
  File "e:\\pyScripts\\test02.py", line 4, in <module>
    print(b.x)
NameError: name 'b' is not defined

②在__init__.py里利用from-import语句导入包。执行时,再次导入(import testdemo1122)包后,包里所有模块中的方法或属性就全部可用了

执行结果:

3
1

③在__init__.py里利用import语句导入包

执行结果:

3
1

4.包的相对路径引用

包结构如下:

Test
  __init__.py
  test1
    __init__.py
    a.py
    b.py
  test2
    __init__.py
    d.py

包内引用如果是子包内的引用,可以按相对位置引入子模块以b模块为例,可以引用如下:

1 from . import a                   # 同级目录导入a
2 from .. import test2            # 上级目录导入test2
3 from ..test2 import d          # 上级目录的test2模块下导入d

5.包的总结

➢导入一个模块时,会执行这个模块
➢导入一个包,其实就是导入包的__init__.py模块
➢__init__.py模块,可以定义__all__列表变量,控制from package import * 导入的模块
➢如果包的__init__.py模块为空,只能使用import package.module或者 from package import module这样的导入方式。使用import package这样的语句是不能使用包当中的任何模块的
➢__init__.py也是个模块,也可以在这个模块中导入其他模块,这样import package时,就能直接使用导入的内容了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值