第七章、包、模块、函数与变量作用域

第七章、包、模块

一、包

  1. 包就是带有__init__.py的文件夹

  2. 包和模块的命名,包的名字就是文件夹的名字,文件的名字就是模块的名字

  3. 若存在两个相同的模块,但是模块的包不相同,而名字相同,那么就需要用包名.模块名来调用模块

  • seven.c4
    six.c4
    
  1. 包下面可以有子包
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5DtPW4nN-1604139155786)(C:\Users\zhf28\Desktop\学习笔记\Python笔记\python笔记\第7章\img\1.png)]

    • 在python中要想成为包,就必须有__init__.py[^1],这个模块可以什么都不写,但是必须存在,才能表示该文件夹是包

二、模块的导入

  1. 在别的模块中调用某个变量,如果不调用,则会报错

  2. 导入模块的两种方式:import[2]和`from`[4]

  • import ccc1
    print(ccc1.a)
    # 结果:
    10
    
  1. 若模块在包中,导入格式是包名.模块名
  • import son_bag.ccc11
    print(son_bag.ccc11.a)
    # 结果:
    10
    
  1. 不能直接导入模块下的变量

  2. 简化路径用as[^3]

  • import son_bag.ccc11 as m
    print(m.a)
    # 结果:
    10
    
  • 导入包中的模块的变量
    from son_bag.ccc11 import a
    print(a)
    结果:
    100
    
  • # 导入包中的模块
    
    from son_bag import ccc11
    print(ccc11.a)
    
    # 结果:
    100
    
  • # 当包中存在多个变量或,想要导入多个数据时,导入方式
    from son_bag.ccc11 import *
    print(a,end=" ")
    print(b,end=" ")
    print(c,end=" ")
    print(d,end=" ")
    # 运行结果
    100 20 30 40
    
  • # 指定导入变量
    # 在模块中加入
    # ccc11.py
    
    __all__ = ['a','c']
    a = 2
    b = 3
    c = 4
    
    # ccc3.py
    
    from son_bag.ccc11 import *
    print(a,end=" ")
    print(b,end=" ")
    print(c,end=" ")
    print(d,end=" ")
    
    # 运行结果
    
    报错
    
  1. __all__:模块内置属性,指定导入数据,也可以指定导入的模块

    • __all__ = ['bar', 'baz']
      

用逗号引入多个变量

from son_bag.ccc11 import a,b,c,d
print(a,end=" “)
print(b,end=” “)
print(c,end=” “)
print(d,end=” ")

运行结果

100 20 30 40


8. 当导入数据,或书写数据过多时,可以在末尾加`\  ()`进行换行

9. `__init__.py`:会被自动调用

+ ```python
  # 导包
  import x1
  # 结果
  这是一个__init__.py文件
  ```

+ **应用场景:指定导入模块,和批量导入模块**
+ ```python
  # 在x1包的__init__.py中指定模块
  a = "这是一个__init__.py文件,将被自动执行"
  print(a)
  __all__ = ["cc1"]
  # 运行c2
  from x1 import *
  print(a)
  print(d)
  # 结果:
  报错
  ```

## 三、包和模块的常见错误

1. 包和模块是不能被重复导入
2. 避免循环导入
3. python 在导入模块的时候会执行模块中的代码
4. 入口文件


[^1]:  `__init__.py`这个模块的名字比较特殊,就是文件夹的名字
[^2]:  import可以导入包和模块
[^3]:  缩减导包的路径长度
. 包和模块是不能被重复导入
2. 避免循环导入
3. python 在导入模块的时候会执行模块中的代码
4. 入口文件


[^1]:  `__init__.py`这个模块的名字比较特殊,就是文件夹的名字
[^2]:  import可以导入包和模块
[^3]:  缩减导包的路径长度
[^4]:  直接导入变量,函数,或包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值