跳至内容

Python模块

模块(Module)是一个包含执行特定任务代码的文件。一个模块可以包含变量、函数、类等.

我们创建一个模块,将下面的代码保存到test.py中。

python
def add(a, b):
    result = a + b
    return result
def add(a, b):
    result = a + b
    return result

这里,我们在模块test中定义了一个add()函数。这个函数接收两个参数,返回累加和。

导入自定义模块

Python中,可以将一个模块内的定义导入到另一个模块中,或者交互式解释器中。导入使用import关键字。

python
# 导入上面定义的test模块
import test
# 导入上面定义的test模块
import test

这里并不会导入test模块中的函数名,而只是导入了模块的名称。

如果想要访问模块内的函数名称,可以使用导入的模块名+点号.访问函数名即可。

python
import test
sum = test.add(1, 2)
print(sum)


# 输出:
# 3
import test
sum = test.add(1, 2)
print(sum)


# 输出:
# 3

导入标准库模块

Python的标准库中包含着约200多个模块。我们可以按需导入使用。

假设,我们想要去获取PI的值,首先我们需要导入math模块。然后通过math.pi访问即可。

python
import math
val = math.pi
print("PI的值: ", val)


# 输出:
# PI的值: 3.141592653589793
import math
val = math.pi
print("PI的值: ", val)


# 输出:
# PI的值: 3.141592653589793

导入重命名

Python中,可以将导入的模块重命名。

python
import math as m
val = m.pi
print("PI的值: ", val)


# 输出:
# PI的值: 3.141592653589793
import math as m
val = m.pi
print("PI的值: ", val)


# 输出:
# PI的值: 3.141592653589793

这里,我们将math模块重命名为m,重命名后的模块不能用原名称访问。即math.pi不可使用。

导入指定名称

Python中,可以从模块里导入指定的名称,而不用去全部导入。

python
from math import pi
print("PI的值: ", pi)


# 输出:
# PI的值: 3.141592653589793
from math import pi
print("PI的值: ", pi)


# 输出:
# PI的值: 3.141592653589793

这里,我们只导入了math模块的pi属性

导入所有名称

Python中,我们可以导入模块中的所有名称。通过星号*实现。

python
from math import *
print("PI的值: ", pi)


# 输出:
# PI的值: 3.141592653589793
from math import *
print("PI的值: ", pi)


# 输出:
# PI的值: 3.141592653589793

这里,导入了定义在math模块中的所有名称,除了下划线开始的命名(私有属性) 导入全部名称不是编程最佳实践,这可能会导致变量的重复定义,同时也破坏了代码的可读性。

dir()函数

Python中,可以使用dir()函数列举出模块中的所有函数名。

上面我们定义了test模块,使用dir()打印函数列表。

python
dir(test)


# 输出:
# ['__builtins__',
# '__cached__',
# '__doc__',
# '__file__',
# '__initializing__',
# '__loader__',
# '__name__',
# '__package__',
# 'add']
dir(test)


# 输出:
# ['__builtins__',
# '__cached__',
# '__doc__',
# '__file__',
# '__initializing__',
# '__loader__',
# '__name__',
# '__package__',
# 'add']

这里,可以看到dir()函数列出了所有的函数名称。所有下划线_开始的都是模块的自有属性。