五、Python的组织结构

五、Python的组织结构_变量名

只有文件夹下面加上 _init_.py 文件,这个文件夹才算是一个包,运行包会优先执行_init_.py文件

1、引入模块

​import,需要引用其他模块的变量,可使用import

五、Python的组织结构_包名_02

引入函数与变量

from module_b.n1 import a
print(a)

从某模块引入

from module_b import n1
print(n1.a)

引入所有变量

from module_b.n1 import *——引入所有的变量。

注:如果执行导入部分模块,可在n1文件中加入__all__ = ['a','b'],这个时候就只是导入了a、b两个变量

# 引入所有变量
from module_b.n1 import *
print(a,b,c)

引入多个变量或者模块

# 引入多个变量或者模块时,\换行
from module_b.n1 import a,b,\
c
# 引入多个变量或者模块时,()换行
from module_b.n1 import (a,b,
c)

注意事项

​import导入,避免循环导入,或者间接循环导入模块,例如a模块导入b模块,b模块导入a模块

import导入,当a导入了b模块,执行a模块,也会执行b模块所有的代码

2、__init__.py介绍

1、包,相当于一个文件夹,成为一个包,需要增加一个特殊文件,__init__.py文件,这个模块命名就是包名

2、import导入包后或者模块,以及变量,在执行被导入py文件时,会自动执行__init__.py文件。

例如:将b包导入到c包中,执行c包的文件中,会优先自动执行b中的__init__.py文件

3、当一个包中,多个py文件需要引用多个库时,可在__init__.py加入需要导入的库,供其他py文件使用

例如:

在二级目录packag_b包中的__init__.py文件中,导入3个库

五、Python的组织结构_包名_03

在一级目录packag_a包中的m1.py文件中使用sys库

五、Python的组织结构_包名_04

3、模块中的内置变量

1、通过dir方法查询模块内置变量,例如:print(dir())

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

在导入包时,使用dir(),加入参数可以查看包中所有变量,例如dir(sys)

五、Python的组织结构_python_05

2、当a模块调用b模块时,可通过内置变量可查询内容如下:

__name__,查询调用模块名称

__package__,查询调用模块的包

__doc__,查询调用模块注释

__file__,查询调用模块的py文件路径

例如:

在a包n1.py模块下,查询变量内容

五、Python的组织结构_包名_06

使用b包的m3.py模块作为可执行入口文件,调用a包的n1.py模块

print('调用模块变量内容')
import package_b.n1
print('\n'+'分界线'.center(50,'#')+'\n')
print('可执行文件,当前模块变量内容')
print('name:'+__name__)
print('package:'+(__package__ or '当前模块不属于任何包'))
print('doc:'+(__doc__ or '当前模块没有文档注释'))
print('file:'+__file__)

五、Python的组织结构_隐藏文件_07结果

调用模块变量内容
package_b.n1
name:package_b.n1
package:package_b
doc: package_b 
file:/Users/zhangchen/Downloads/Py_study/package_a/package_b/n1.py

#######################分界线########################

可执行文件,当前模块变量内容
name:__main__
package:当前模块不属于任何包
doc:当前模块没有文档注释
file:/Users/zhangchen/Downloads/Py_study/package_a/m3.py

4、注意事项

通过在py文件中加入if __name__ == '__main__':语句,作为当前文件为可执行文件,也可以作为模块,当a模块放入此语句时,在b模块中调用a模块,执行b模块时,此语句下的编码不会被执行

使用python3 -m module_b.n1.py,可以将可执行文件当做模块使用

顶级包的概念——是可执行文件同级包的顶层

五、Python的组织结构_包名_08

使用".",导入相对路径的变量,例如from .m3 import m

五、Python的组织结构_包名_09

注:入口文件不能使用相对路径导入,如果想执行模块需要使用命令python3 -m

9.当多个模块需要引用同一个内置库,可以在__init__.py文件中直接导入,包下的模块都能使用

在__init__.py文件下,引入需要导入内置库。

五、Python的组织结构_隐藏文件_10

 在其他模块引用是,只需要import+包名,就可以调内置库里的变量

五、Python的组织结构_python_11

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值