您的位置:

Python中import的用法

背景

在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关键字给它们取别名。在实际编程中,我们需要结合具体情况选择合适的导入方式。