一. 基本概念
1.什么是模块:模块是一个文件,模块文件名通常以'.py'结尾,由一系列数据,函数,类等组成;
2.模块的作用:
- 让一些相关的数据,函数,类等有逻辑地组织在一起,使逻辑结构更加清晰。
- 模块中的变量,函数和类等可提供给其它模块或程序使用。
3.模块的分类:
- 内置模块builtins:在解析器的内部可以直接使用;
- 标准库模块:装python时已安装且可以直接使用;
- 第三方模块:需要自行安装后使用;
- 自定义模块:用户自己编定的模块,可以作为其他人的第三方模块使用。
二. 模块的导入
2.1 import 语句
- 语法:import 模块名1 [as 模块新名1], 模块名2 [as 模块新名2], ...
- 示例:
- import math #导入数学模块;
- import sys, os #导入sys和os模块;
- import copy as cp
- 作用:将一个模块整体导入到当前模块中;
- 属性用法:模块名.属性名
- help()可以查看模块的文档字符串,可以一次在中断中运行下列语句,查看结果:
- >>>import math #相当于在当前模块,用math变量绑定一个对象
- >>>help(math)
2.2 from ... import ...语句
- from import 语句:
- 语法:
from 模块名 import 模块属性名1 [as 属性名新名1], 模块属性名2 [as 属性名新名2]... -
作用:
将某个模块的一个或多个属性导入到当前模块的作用域 -
示例:
from math import pi
from math import sin
from math import factorial as fac
- from import * 语句:
- 语法:
from 模块名 import * - 作用:
将某模块的所有属性导入到当前的模块 - 示例:
from math import *
s = sin(pi/2)
print(factorial(10))
------------>并不推荐采用此种方法,会污染当前环境的变量名空间;而且对引用的函数,属性并不清楚其来源于哪个模块
三. dir函数
- 语法:dir([对象]) 返回一个字符串列表
- 作用:
1.如果没有参数调用,则返回当前作用域内所有变量的列表
2.如果给定一个对象作为参数,则返回这个对象的所在变量(属性)列表: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):
"""函数my_fact的文档字符串"""
print(n, "的阶乘为:", math.factorial(n))
def my_add(n):
"""函数my_fact的文档字符串"""
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)
运行结果: