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模块中的变量a
import module_name import * 引入模块中的所有变量(不推荐)
变量的定义 _all_= ['a', 'c'] 意思是当使用import module_name import *的时候只会引入这两个变量)


相对导入_
. 表示同级 from .module_name import m
.. 不是同级但是
入口文件不能用相对路径,只能用绝对路径

  1. import sys
  2. #到当前目录的上一级
  3. sys.path.append("..")
  4. 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,有效避免冲突。