包
python的包下必须有一个文件名字固定为_init_.py
,有这个模块才能标注这个文件夹为python包
包外面模块引入包import module_name
会自动加载init.py,该模块中的变量也会被加载
如果好多模块都要引入三个模块,那么可以把这三个模块的import语句提取到_init_.py
中,然后所有需要这三个模块的模块只需要引入init.py所在的包就可以了。
倒入包
方式一 import xxx
import module_name
模块名为xx.py中的xx,此方法适用于引入同个包中的module,如果在不同的包就需要写明命名空间.模块名。
使用变量的时候需要module_name.varible
如果直接导入一个模块,就会执行模块里面的语句。
方式二 from module import variable
import t.c7 import a
引入t.c7模块中的变量aimport module_name import *
引入模块中的所有变量(不推荐)
变量的定义 _all_= ['a', 'c']
意思是当使用import module_name import *
的时候只会引入这两个变量)
相对导入_.
表示同级 from .module_name import m
..
不是同级但是
入口文件不能用相对路径,只能用绝对路径
import sys
#到当前目录的上一级
sys.path.append("..")
import 同级文件.同级文件的子文件 import *
import 同一个模块只会被执行一次,这样能防止重复倒入模块出现问题
模块
模块内置变量
模块内内置好的变量,总有有这些
[‘annotations‘, ‘builtins‘, ‘cached‘, ‘doc‘, ‘file‘, ‘loader‘, ‘name‘, ‘package‘, ‘spec‘] (infos = dir() print(infos)
查看)
doc必须有文档注释才能看到
package显示当前模块的包的信息,如果该模块为主入口(python xx。py 中xx模块为python程序的主入口)那么该模块内的置变量内容为nonetype。__name__
可以用来查看该模块是否是主程序入口,如果是的就内容为__main__
巧用if name==’main‘:
import的时候会执行一下所有暴露在外面的代码,如果想要避开import时的执行,就把它放在name==’main‘的下面
init初始化文件(仅python2的标准)
规范
绝对路径:从根目录开始的完整路径
相对路径:目标文件相对当前文件的路径
最好使用绝对路径,因为如果修改了一些文件,相对路径也要相应的修改。
题目:
from module_name import 和import module_name有什么区别呢?
from module_name import 会把 module 中所有的函数和类全拿过来,如果和其他函数名类名有冲突就会出问题;import model_name 也会导入所有函数和类,但是调用的时候必须使用 model_name.func 的方法来调用,等于增加了一层 layer,有效避免冲突。