包和模块
首先要弄清这两个概念, 在python 中 一个文件夹中包含__init__.py 文件(这个文件是包的初始化文件,在你导入包或包下面的模块的时候,这个文件会最开始运行),就会被python看做一个包, 包中包含模块, 模块就是python的文件, 例如xxx.py。
import
如果单独使用 import导入, 那么 import 可以有这几种格式:
import 包import 包.模块
import 包.子包.模块
他们导入方式对应的调用方式分别为(假设调用模块下面的函数):
包.模块.函数()包.模块.函数()
包.子包.模块.函数()
也就是说, 当使用import导入的时候,要使用模块一个函数需要将 import 后面的东西都加上才可以使用。
当然这里的举的例子是函数()其实也可以是模块中的全局变量 或类 使用 import 导入有一条注意:不能直接导入模块下面的东西(函数,类,全局变量), 最多只能到模块
from import
这种导入可以减少你调用模块下函数的代码量
from import 可以有一下几种格式
from 包.模块 import 函数
from 包.子包.模块. import 函数
from 包 import 子包
他们导入方式对应的调用方式分别为(假设调用模块下面的函数):
模块.函数()函数()
函数()
子包.模块.函数()
调用方式遵循我上面说的 使用import导入时, 调用其模块中函数调用规则, 也就是调用其中函数,要将 import 后面的当做前缀都写一遍xx.xxx.xx.函数(), 而例子中 from 包.模块 import 函数 就可以直接调用函数, 所以 调用的时候是根据 import 内容决定的。
使用from import 导入还有一个规则, 就是 import 只能导入一个东西, 或模块, 或函数,所以 from 包 import 模块.函数这种写法是错误的, 也就是from import 的 import后面不能有.
总结
1. 在导入的时候 无论是from 还是 import , 模块后面都不可以与模块中内容(全局变量,类,函数)进行.连接, 调用的时候可以
2. 调用的时候, 前缀要加上 import 后面的内容
3. from import 这种导入模式中 import 后面只能是一个层级, import 后面不能有 .
作者:Hello_wshuo