模块二-- 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文件解释一遍。

  1. import module_name,好比于将module_name赋值给一个变量。

将module_name中所有的code代码赋值给一个变量,当要调用module_name里的函数或变量时,就要用module_name.func()。

  1. from module_name import func/variable,等于导入了module_name的函数或变量
  2. 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,就导入的模块名赋值给一个变量,减少代码的输入。(省人工,但是不便于阅读,除非这个变量可读性强)