模块二-- Import本质
什么是模块?
- 模块的本质是一个py文件。(文件名:module_test.py,模块名就是module_test)
- 模块用来从逻辑上组织python代码(变量、函数、类、逻辑)。
- 模块就是为了实现一个功能。
模块的导入方法
方法1. import module_name
import module_name
# 使用这样的方式导入,要注意
# 1. 此module_name是在环境变量内存在
# 2. 此module_name或是同一个目录下
module_name()
import module_name
# 使用这样的方式导入,要注意
# 1. 此module_name是在环境变量内存在
# 2. 此module_name或是同一个目录下
module_name()
方法2. import module_name,module2_name
import module_name, module_name2
module_name()
module_name2()
import module_name, module_name2
module_name()
module_name2()
方法3. from module_name import * 不建议使用
from module_name import *
# 导入模块中所有的变量,函数
func_1()
func_2()
# 不建议使用,这样导入会与原程序的函数有冲突,会使导入的函数失效,因为Python是解释性语言,以最后定义的函数为准。
from module_name import *
# 导入模块中所有的变量,函数
func_1()
func_2()
# 不建议使用,这样导入会与原程序的函数有冲突,会使导入的函数失效,因为Python是解释性语言,以最后定义的函数为准。
方法4. from module_name import func
from module_name import func1, func2, func3
# 使用这样的方式导入,可以直接调用func这个函数
# 如果程序里已经有func的函数,就会出现冲突,以最后一个定义的函数为准
func1()
func2()
func3()
from module_name import func1, func2, func3
# 使用这样的方式导入,可以直接调用func这个函数
# 如果程序里已经有func的函数,就会出现冲突,以最后一个定义的函数为准
func1()
func2()
func3()
方法5. from module_name import func as func_name
from module_name import func as func_name
# 使用这样的方式导入,可以直接调用func_name这个函数
func_name()
from module_name import func as func_name
# 使用这样的方式导入,可以直接调用func_name这个函数
func_name()
方法6. from . import func 相对导入
# 一般在__init__.py文件中添加,用于导入包内的py文件
from . import func
# 一般在__init__.py文件中添加,用于导入包内的py文件
from . import func
import的本质
import的本质就是把python文件解释一遍。
- import module_name,好比于将module_name赋值给一个变量。
将module_name中所有的code代码赋值给一个变量,当要调用module_name里的函数或变量时,就要用module_name.func()。
- from module_name import func/variable,等于导入了module_name的函数或变量
- import package_name 导入包文件
包的定义:
包用来从逻辑上组织模块。
包的本质是一个目录,但是必须带有一个__init__.py文件。
导入一个包:
导入包的本质,就是在执行解释包下的__init__.py文件。
见导入方法6
模块的分类
- 标准库
- 开源模块
- 自定义模块
写在后面
- 不建议使用from module_name import *导入模块中所有的变量和函数等
- 导入包,就是在导入__init__.py文件,所以导入包就要将__init__.py内容写好
- 导入模块优化1,如果多次调用同一个模块下的同一个func,可以使用from module_name import func或from module_name import func_1(这样是因为别与现有func冲突)
- 导入模块优化2,就导入的模块名赋值给一个变量,减少代码的输入。(省人工,但是不便于阅读,除非这个变量可读性强)