Python 模块

简述

前面,我们分享的所有示例程序几乎都是在 Python 的交互式 shell 中完成的。倘若从 shell 中退出,则之前所做的一切都会丢失。因此,如果要编写较长的程序,最好是利用文本编辑器,将程序保存在文件中,然后将该文件作为解释器的输入来运行,这个过程被称为创建脚本。

随着程序的发展,功能会越来越多,通常需要将其拆分成好多个文件,以便使结构清晰、易于维护。除此之外,还可能想在多个程序中使用已编写过的一些函数,而无需将其定义复制到每个程序中… 为此,可以将定义放在一个文件中,并在解释器的交互模式下或者脚本中使用它,这样的文件被称为模块。

| 版权声明:一去、二三里,未经博主允许不得转载。

Python 中的模块

模块是一个包含 Python 代码的 .py 文件

模块既可以被导入到 Python 的交互式解释器中,也可以被导入到其他模块中,除此之外,模块还可以作为独立的脚本来执行。

导入模块的动作由 import 语句完成,通常(非必需)将所有的 import 语句放在一个模块(或脚本)的开头处,被导入的模块名被放置在导入模块的全局符号表中。

一个模块可以包含可执行语句和函数定义,这些语句用于初始化模块,它们仅在 import 语句中第一次遇到模块名时执行(如果文件作为脚本执行,它们也会运行)。

Python 本身提供了大量的标准模块(例如:mathos),完整的列表可以在 Python Module Index 中找到,这些文件位于 Python 安装位置的 Lib 目录中。

注意:标准模块的导入方式与用户自定义模块的导入方式相同

import 语句

可以使用 import 语句导入一个模块,并使用点(.)运算符访问其中的名称(定义)。

例如,我们编写了一个 script.py 模块,来访问标准模块 math

import math

print('pi:', math.pi)
print('fabs:', math.fabs(-2))

其中,pimath 的属性,也就是数学中的圆周率 - π。而 fabs() 是其中的函数,用于取绝对值。

执行脚本:

$ python script.py 
pi: 3.141592653589793
fabs: 2.0

如果要导入多个模块,可以使用多个 import 语句:

import math
import os

也可以将其合并为一个,模块名之间用逗号(,)进行分隔:

import math, os

推荐使用第一种方式,可读性更好。虽然操作起来麻烦一些,但便于理解。

import ... as ... 语句

一旦模块名称过长,便可以在导入时进行重命名,帮助记忆。

例如,将 math 重命名为 m

import math as m

print('pi:', m.pi)
print('fabs:', m.fabs(-2))

# 无效,引发 NameError
#print('pi:', math.pi)
#print('fabs:', math.fabs(-2))

这里,可以将 m 看做是 math 的一个别名,用 m.pi 的形式来访问。

注意: 在这种情况下,名称 math 不会被识别,它是无效的。

from ... import ... 语句

可以从模块导入特定的名称,而无需导入整个模块。

例如,从 math 模块仅导入属性 pi

from math import pi

print('pi:', pi)

# 无效,引发 NameError
#print('pi:', math.pi)
#print('fabs:', fabs(-2))

这时,要访问 pi,不需要使用点运算符。

注意: 在这种情况下,由于只导入了 pi 而没有导入其他名称,所以无法访问 fabs()

from ... import * 语句

可以使用星号(*)从模块中导入所有的名称。

from math import *

print('pi:', pi)
print('fabs:', fabs(-2))

这样,math 模块中的所有定义都会被导入,这使得除了以下划线(_)开始的所有名字在范围内都是可见的。

注意: 这种用法并不好,因为会引入一组未知的名称,而且有可能导致标识符的重复定义,可读性很差,所以不建议使用。

展开阅读全文
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值