py知识(每日更新) 7.1

包的使用

第一类:

​ 执行文件 通过import导入包以及包内的功能

​ 创建一个aaa的包,自行创建一个__init__py文件

​ 创建一个包会发生三件事儿:

​ 1.将以XXX包内的__init__py文件加载到内存中

​ 2.创建一个以XXX命名的名称空间.

​ 3.通过XXX . 的当时引用__init__的所有的名字.

import aaa
# 如何在当前文件中,引用aaa包的bbb包?
    1.在执行文件写入 import aaa
    2. aaa的__init__ 里面写 from aaa import bbb
    3.在执行文件 aaa.bbb
print(aaa.bbb)

如何在当前文件中,引用aaa包的bbb包的MB文件中的函数FUNC.
    1.在执行文件写入 import aaa
    2. 在aaa包的`__init__` 写上 from aaa import bbb (这样bbb包的__init__ 里面的所有的名字都能够被引用)
print(aaa.bbb.name)
    3.在bbb包的`__init__` 协商from aaa.bbb import mb
aaa.bbb.mb.func3()

注意:
    最开始的模块或者包名一定是内存,内置,sys.path中能找到的
    直接import 是为了让我们会使用包里面的__init__ 
第二类:
from ... import ...

不用设置init文件

from aaa.bbb.m2 import func1
func1()
from aaa.bbb import m2
m2.func1()

from a.b.c import d.e.f
# c的. 的前面一定是包名
# import 的后面一定是名字,且不能再有点
错误示范:
    from aaa.bbb.m2.func1 omport a
    应为:
    from aaa.bbb import m2
    m2.func1()
相对导入和绝对导入

​ 需求由来:无论对XX模块有任何操作,对于使用者来说不应该改变,极少的改变对其的调用

​ 用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)

from ..cmd import manage
manage.main()

绝对导入与相对导入
# 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
#        优点: 执行文件与被导入的模块中都可以使用
#        缺点: 所有导入都是以sys.path为起始点,导入麻烦

# 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
#        符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
#        优点: 导入更加简单
#        缺点: 只能在导入包中的模块时才能使用
      #注意:
        1. 相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
        2. attempted relative import beyond top-level package # 试图在顶级包之外使用相对导入是错误的,言外之意,必须在顶级包内使用相对导入,每增加一个.代表跳到上一级文件夹,而上一级不应该超出顶级包

转载于:https://www.cnblogs.com/lyoko1996/p/11133506.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值