背景
在Python中,我们可以把模块(module)理解为代码的组织单元,一个模块通常包含若干函数、类、变量等等。一个代码文件就是一个模块,而多个模块可以组合成一个Python程序。
正文
一、import基本用法
在Python中,我们可以使用import语句来引入一个模块的功能。
import 模块名
这样一来,我们就可以使用被引入模块中的变量、类、函数等等了!
比如,我们可以引入Python内建的math库:
import math
print(math.sin(math.pi / 2))
输出:1.0
二、from ... import 语句
除了使用import语句,我们也可以使用from...import语句来引入模块的部分内容。
比如,我们可以这样引入math库中的sin函数:
from math import sin
print(sin(math.pi / 2))
输出:1.0
需要注意的是,使用from...import语句引入的变量、函数等等不需要加上模块名前缀。
三、as关键字
在使用import和from...import语句时,我们可以使用as关键字给被引入的模块、函数、变量等等取别名。
比如,我们可以这样引入math库并给它取一个简单的别名:
import math as m
print(m.sin(m.pi / 2))
输出:1.0
又比如,我们可以这样引入sin函数并给它取一个简单的别名:
from math import sin as s
print(s(math.pi / 2))
输出:1.0
四、__init__.py文件
在Python中,一个文件夹被视为一个包,而里面的Python文件就是这个包的模块。在Python 2.x中,我们需要在这个文件夹中加入一个空文件:__init__.py。
而在Python 3.x中,只要是一个文件夹下面有一个Python文件,它就是一个包了,不需要再加上__init__.py文件了。
五、包的相对导入和绝对导入
在Python中,模块之间的导入一般分为两种:相对导入和绝对导入。
相对导入:使用相对路径,通过"."表示当前模块,".."表示父级模块。
from . import module1 #从当前包中导入module1
from ..subpackage2 import module2 #从父级包的subpackage2中导入module2
绝对导入:使用绝对路径,从项目的顶层目录开始指定模块的路径。需要在Python 2.x中加上from __future__ import absolute_import语句。
from project.package import module3 #从项目的顶层目录中导入package中的module3
六、动态导入
有时候,我们需要在程序运行时才能确定要导入的模块,这时候,就可以使用Python的动态导入功能。
比如,我们可以这样动态导入一个模块并使用其中的函数:
import importlib
module_name = "math"
module = importlib.import_module(module_name)
print(module.sin(module.pi / 2))
输出:1.0
结论
Python中import的用法是非常灵活的,可以通过使用不同的语句来导入模块的各种内容,也可以使用as关键字给它们取别名。在实际编程中,我们需要结合具体情况选择合适的导入方式。