1.模块是什么
• 容器(列表、元组、字符串、字典等),是对数据的封装。
• 函数,是对语句的封装。
• 类,是对方法和属性的封装,也就是对函数和数据的封装。
•模块,是对功能代码(程序)的封装
2.命名空间
命名空间(namespace)表示标识符 (identifier)的可见范围。一个标识符可在多个命名空间中定义,它在 不同命名空间中的含义是互不相干的。在Python中,每个模块都会维护一个独立的命名空间,应该将模块 名加上,才能够正常使用模块中的函数
3.导入模块
第一种:import模块名
直接使用import,但是在调用模块中的函数的时候,需要加上模块的命名空间。
# p13_2.py
import p13_1
print("32摄氏度 = %.2f华氏度" % p13_1.c2f(32))
print("99华氏度 = %.2f摄氏度" % p13_1.f2c(99))
第二种:from 模块名 import 函数名
这种导入方法会直接将模块的命名空间覆盖进来,所以调用的时候 也就不需要再加上命名空间了
还可以使用通配符星号(*)来导入模块中所有的命名空间。可能会陷入名字混乱的局面
from p13_1 import c2f, f2c
print("32摄氏度 = %.2f华氏度" % c2f(32))
print("99华氏度 = %.2f摄氏度" % f2c(99))
from p13_1 import * #不推荐
第三种:import模块名as新名字
最好的总是留在最后,第三种方法结合了前两种的优势,使用这种方法可以给导入的命名空间起一个新的名字。
# p13_4.py
import p13_1 as tc
print("32摄氏度 = %.2f华氏度" % tc.c2f(32))
print("99华氏度 = %.2f摄氏度" % tc.f2c(99))
4. _ _name_ _='_ _main_ _'
让Python知道该模块是作为程序运行还 是导入到其他模块中。在作为程序运行的时候,_ _name_ _属性的值是'_ _main_ _';而作 为模块导入的时候,这个值就是该模块的名字。
# p13_7.py
def c2f(cel):
fah = cel * 1.8 + 32
return fah
def f2c(fah):
cel = (fah - 32) / 1.8
return cel
def test():
print("测试,0摄氏度 = %.2f华氏度" % c2f(0))
print("测试,0华氏度 = %.2f摄氏度" % f2c(0))
if __name__ == '__main__':
test()
#上面的代码确保只有单独运行p13_7.py时才会执行test()函数。
5.搜索路径
就是一组目录,可以通过sys模块中的path变量显示出来。
sys.path.append("E:\\M1")#加入搜索路径
sys.path
6.包
创建一个包的具体操作如下:
(1)创建一个文件夹用于存放相关的模块,文件夹的名字即包的名字。
(2)在文件夹中创建一个_ _init_ _.py的模块文件,内容可以为空。
(3)将相关的模块放入文件夹中。
注意: 在第(2)步中,必须在每一个包目录下建立一个_ _init_ _.py模 块,可以是一个空文件,也可以写一些初始化代码。这是Python的规定,用来告诉Python将该目录当成一个包来处理。不加这个文件其实也可以正常导入。
接下来就是在程序中导入包的模块(包名.模块名)
# p13_8.py
# 请先按步骤将p13_7.py放在了文件夹M1中
import M1.p13_7 as tc
print("32摄氏度 = %.2f华氏度" % tc.c2f(32))
print("99华氏度 = %.2f摄氏度" % tc.f2c(99))
7.Python的设计哲学是“优雅、明确、简单”
PEP(Python Enhancement Proposal,Python增强建议书)
可以调用_ _doc_ _属性,查看这个模块的简介
dir()函数可以查询到该模块定义了哪些变量、函数和类
_ _all_ _属性就可以直接获得可供调用接口的信息
这里有两点需要注意:
第一,不是所有的模块都有_ _all_ _属性;
第二,如果一个模块设置了_ _all_ _属性,那么使用“from timeit import *”这样的形式导入命名空间,就只有_ _all_ _属性这个列表里的名字才会被导入,其他名字不受影响
但如果没有设置_ _all_ _属性的话,用“from模块名import *”就会把 所有不以下画线开头的名字都导入到当前的命名空间。所以,建议在编 写模块的时候,将对外提供的接口函数和类都设置到_ _all_ _属性的列表里。
另外还有一个名为_ _file_ _的属性,这个属性指明了该模块的源代码位置。
最后,还有一道“杀手锏”,也是常用的,即help()函数: