关于python导包问题(新手向)
包和模块
首先要弄清这两个概念, 在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 函数
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,转载请注明原文链接:https://www.cnblogs.com/Hellowshuo/p/15622167.html