7-6 Python包与模块的名字
如果想让普通的文件夹成为包,里面必须包含init.py文件,本身也是个模块,可以空着就用来文件夹是包,也可以在里面写代码,这个模块的名字就是包的名字,其他模块的名字是包名字.模块名字
7-7 import导入模块
引用其他模块的变量需要导入其他模块
seven包里面有三个模块,c1.py,c2.py,init.py
c1模块:a = 2
c2模块:import c1
print(c1.a)
如果将c1从seven包移到t包(t包是seven包子包)
c2模块:import t.c1
print(t.c1.a)
也可以用as简化字符路径
c2模块:import t.c1 as m
print(m.a)
虽然import函数容易导致命名空间过长问题,但是可以直接看出变量属于哪个模块哪个包
7-8 from import导入变量
from t.c1 import a
print(a)
用可以一次性引入所有变量
from t.c1 import
print(a)
print(b)
print(c)
如果想只导入c1中的a,c,则使用双下划线all语句
c1模块:
all= ['a','c']
a = 2
c = 3
d = 4
c2模块:
from t.c1 import *
print(a)
print(b)
print(c)
或from t.c1 import a,c
7-9 init.py的用法
导入变量过多时,一行末尾加\换行,或者用()将所有变量括起来
用all= ['c1']只导入c1模块
在t包中的init.py模块里面引入很多系统库,在其他模块中只要写import t则可以实现批量导入
7-10 包与模块的几个常见错误
包和模块不会被重复导入,无论一个模块被其他多少个模块导入过,都只会导入1次
避免循环导入,模块c2中导入c1,然后c1中又导入c2
在一个模块导入另一个模块,会执行这个模块里面所有的代码
7-12 入口文件和普通模块内置变量的区别
print('name:' +name)
print('package:' +(package or '当前模块不属于任何包'))
print('doc:' +(doc or '当前模块没有文档注释'))
print('file:' +file)
一个文件如果被当做入口文件,则该文件不属于任何包,且该文件的名字会输出main
7-13 name的经典应用
用dir()可以显示出当前模块所有内置变量
打印系统的内置变量
import sys
infos = dir()
print(infos)
7-14,15 相对导入和绝对导入
一个模块的顶级包和main.py(入口文件)所在的层级有关
绝对路径必须从顶级包开始
import不可以使用相对路径导入
相对导入:.本级目录 ..上一级目录 …上上级目录
用form import 进行相对路径导入
不可以引入超过顶级包的路径
m2的顶级包是package2
m5和main.py是同一级别,main.py不属于任何包
入口文件不可以使用相对路径
用python -m指令可以将入口文件当作普通模块执行
共同学习,写下你的评论
评论加载中...
作者其他优质文章