模块
在前面我们脚本是用 Python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块(Module)。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 Python 标准库的方法。
1. 什么是模块
容器 -> 数据的封装
函数 -> 语句的封装
类 -> 方法和属性的封装
模块 -> 程序文件
2. 命名空间
命名空间因为对象的不同,也有所区别,可以分为如下几种:
内置命名空间(Built-in Namespaces):Python 运行起来,它们就存在了。内置函数的命名空间都属于内置命名空间,所以,我们可以在任何程序中直接运行它们,比如id(),不需要做什么操作,拿过来就直接使用了。
全局命名空间(Module:Global Namespaces):每个模块创建它自己所拥有的全局命名空间,不同模块的全局命名空间彼此独立,不同模块中相同名称的命名空间,也会因为模块的不同而不相互干扰。
本地命名空间(Function & Class:Local Namespaces):模块中有函数或者类,每个函数或者类所定义的命名空间就是本地命名空间。如果函数返回了结果或者抛出异常,则本地命名空间也结束了。
上述三种命名空间的关系
程序在查询上述三种命名空间的时候,就按照从里到外的顺序,即:Local Namespaces --> Global Namesspaces --> Built-in Namesspaces。
3. 导入模块
【例子】创建一个模块 TemperatureConversion.py
#TemperatureConversion.py
def c2f(cel):
fah = cel * 1.8 + 32
return fah
def f2c(fah):
cel = (fah - 32) / 1.8
return cel
第一种:import 模块名
【例子】
import TemperatureConversion
print(‘32摄氏度 = %.2f华氏度’ % TemperatureConversion.c2f(32))
print(‘99华氏度 = %.2f摄氏度’ % TemperatureConversion.f2c(99))
#32摄氏度 = 89.60华氏度
#99华氏度 = 37.22摄氏度
第二种:from 模块名 import 函数名
【例子】
from TemperatureConversion import c2f, f2c
print(‘32摄氏度 = %.2f华氏度’ % c2f(32))
print(‘99华氏度 = %.2f摄氏度’ % f2c(99))
#32摄氏度 = 89.60华氏度
#99华氏度 = 37.22摄氏度
下面的方式不推荐
【例子】
from TemperatureConversion import *
print(‘32摄氏度 = %.2f华氏度’ % c2f(32))
print(‘99华氏度 = %.2f摄氏度’ % f2c(99))
#32摄氏度 = 89.60华氏度
#99华氏度 = 37.22摄氏度
第三种:import 模块名 as 新名字
【例子】
import TemperatureConversion as tc
print(‘32摄氏度 = %.