一. 基本概念
1.1 什么是模块
模块是一个文件,模块文件名通常以 '.py' 结尾,由一系列数据,函数,类等组成。
1.2 模块的作用
- 让一些相关的数据,函数,类等有逻辑地组织在一起,使逻辑结构更加清晰。
- 模块中的变量,函数和类等可提供给其它模块或程序使用。
1.3 模块的分类
- 内置模块
builtins
:在解析器的内部可以直接使用; - 标准库模块:装 Python 时已安装且可以直接使用;
- 第三方模块:需要自行安装后使用;
- 自定义模块:用户自己编定的模块,可以作为其他人的第三方模块使用。
二. 模块的导入
2.1 import 语句
- 语法:
import 模块名1 [as 模块新名1], 模块名2 [as 模块新名2], ...
- 示例:
>> import math
>> import sys, os
>> import copy as cp
- 作用:将一个模块整体导入到当前模块中;
- 属性用法:
模块名.属性名
-
help()
可以查看模块的文档字符串:
# 相当于在当前模块,用math变量绑定一个对象
>> import math
>> help(math)
help(math) 运行结果的部分截图
2.2 from ... import ... 语句
- 语法:
from 模块名 import 模块属性名1 [as 属性名新名1], 模块属性名2 [as 属性名新名2]...
- 作用:将某个模块的一个或多个属性导入到当前模块的作用域。
>> from math import pi
>> from math import sin
>> from math import factorial as fac
2.3 from ... import * 语句
- 语法:
from 模块名 import *
- 作用:将某模块的所有属性导入到当前模块的作用域。
>> from math import *
>> sin(pi/2)
1.0
>> print(factorial(10))
3628800
并不推荐采用此种方法,会污染当前环境的变量名空间;而且对引用的函数,属性并不清楚其来源于哪个模块。
三. dir函数
- 语法:
dir([对象])
返回一个字符串列表。 - 作用:如果没有参数调用,则返回当前作用域内所有变量的列表;如果给定一个对象作为参数,则返回这个对象所在的变量(属性)列表:
dir(math)
。
1. 对于一个模块,返回这个模块的全部变量;
2. 对于一个类对象,返回类对象的所有变量,并递归基类对象的所有变量;
3. 对于其它对象,返回所有变量。
四. 自定义模块
文件组织形式如下:
提示:请先忽略
__init__.py
文件,在介绍包的概念时,再做讲解。
my_mode.py
代码:
"""示意自定义模块
此模块中有2个函数:my_fac(n), my_sum(n)
此模块中有2个变量:name1, name2
"""
import math
def my_fact(n):
print(n, "的阶乘为:", math.factorial(n))
def my_add(n):
my_sum = sum(range(n+1))
print("1+2+...+" + str(n) + "=" + str(my_sum))
name1 = "Alex"
name2 = "Nore"
print("mymod 模块导入!")
run.py
代码:
import mymode.my_mode as my_mode
from mymode.my_mode import name1, name2
if __name__ == "__main__":
print("run.py 的 __name__ 属性为: ", __name__)
print("导入的 my_mode 模块的 __name__ 属性为:", my_mode.__name__)
my_mode.my_fact(5)
my_mode.my_add(5)
print(name1, name2)
运行结果:
模块被首次导入后,所有语句都会被自上而下执行一遍,所有变量被定义,并绑定一个对象。