Python之包、模块、函数与变量作用域(四)

一.Python项目的组织结构

最顶级的组织结构:包(文件夹)

第二个层级:模块(文件)

第三个层级:类

第四个层级:函数、变量(不属于组织结构,是类本身的特性)

二.Python包与模块的名字

1.区分不同包的同名模块:包名.模块名
形成的模块的路径叫做命名空间

2.一个包下面可以有子包,模块可以和包平级

3.普通文件夹想要变成包必须要有__init__.py文件
__init__.py本身也是一个模块,可以不写内容只是标注包
特殊的,__init__.py模块的名字就是包名

 三.import 导入模块

对于重复的定义可以从其他模块里引用,不需要重复编写。

1.语法: import 模块名 

若被导入模块在子包下面,要加上命名空间,语法:import  子包名.模块名

2.引用导入模块的某一个变量的语法:模块名.变量名

import t.c
print(t.c.a)

3.可以用as进行简写

举例

import t.c as m
print(m.a)
#print(t.c.a)

四.from import 

1.导入变量

from t.c import a
print(a)
#不需要写成print(t.c.a)

2.导入模块(不推荐)

from t import c
print(c.a)

3.引用大量变量时使用 * :

from c import *

4."*"会一次性的把模块下面所有的变量或者函数全部导入进来,但是在实际的编码过程中不太可能在引入的时候需要全部的变量,那么就需要我们控制 * 的行为,让 * 导入的时候只导入我们指定的变量。

#test1.c
__all__ = ['a','c']    #用内置变量__all__来控制 * 的选择范围
a = 1
b = 2
c = 3
d = 4

#test1.c2 
from c import *
print(a)
print(c)
print(d)       #d没有被打印,报错

运行结果:1   3 

五.__init__.py 的用法

1.隐藏__pycache__文件夹:
文件→首选项→设置→搜索files.exclu,添加"**/_pycache_":true,保存

2.__init__.py文件的作用:
当包被导入时,init.py会首先自动被执行

#t.__init__.py
a = 'This is a __init__.py file'
print(a)

#c11.py
import t               #导入包t,t里面的__init__.py文件就会被自动执行

运行结果:This is a __init__.py file

假如不导入包,而是导入包里面模块的某个变量,init文件依旧会自动运行

#t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4

#c12.py
from t.c7 import a    

运行结果:This is a __init__.py file

3.__init__.py的应用场景:

#t.__init__.py
__all__ = ['c7']       #初始化*,标明哪些模块被导出

#t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4

#t.c8.py
e = 2
f = 3
g = 4

#c11.py
from t import *         #* 表示导入 t 包里的所有模块
print(c7.a)             #c7在init中被定义,可引用
print(c8.e)             #c8在init中未定义,不可引用

运行结果是2

4.__init__.py的重要作用

#t包下面的__init__.py
import sys        #批量导入库,内置标准库
import datetime
import io

#c13.py
import t
print(t.sys.path)     #在这里插入代码片

六.注意要点

1.包和模块是不会被重复的导入的,只会执行一次
2.避免循环导入,不要形成闭环(多个模块之间形成闭环)
3.导入模块的时候会执行模块里所有的代码

参考: https://blog.csdn.net/qq_30463497/article/details/84959324

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值