day11回顾
-
函数式编程
建议使用可重入函数
可重入函数一定不使用除局部变量以外的变量 -
高阶函数:
map(func, 可迭代对象1, 可迭代对象2,…)
filter(func, 可迭代对象)
sorted(可迭代对象, key=None, reverse=False) -
递归函数
函数直接或间接调用自身 -
闭包 closure
内嵌函数引用了外部变量,返回的内嵌函数叫做闭包
装饰器 decorator(专业提高篇)
-
作用:
通常在不改变原函数的情况下,改变或添加原函数功能 -
什么是装饰器:
装饰器是一个函数,能常用来包装另一个函数或类(后面才讲) -
函数装饰器
是指装饰器函数,传入的是函数,返回的也是函数 -
语法:
def 装饰器函数名(形参):
语句块
return 函数对象@装饰器函数名
def 函数名(形参列表):
语句块 -
函数的文档字符串
函数内第一次未赋值给任何变量的字符串是函数的文档字符串- 语法:
def 函数名(参数列表):
“函数的文档字符串”
函数语句块
示例:def cba():
“”“这是一块文档字符串
以下省略300字…”""
pass
help(cba)
- 语法:
-
函数的 __doc__属性
__doc__属性用于记录函数的文档字符串
如:
print(cba.doc) -
函数定义语句(def语句)的完整语法:
[@装饰器名1]
[@装饰器名2]
[…]
def 函数名([位置形参], [*元组形参], [命名关键字形参], [**字典形参]):
“文档字符串”
语句块 -
面试题:
L = [1, 2]
def f(n, lst=[]):
‘’’ lst 绑定的列表[] 会在def语句
创建时创建,且和f绑定的函数一同存在’’’
lst.append(n)
print(lst)
f(3, L) # [1, 2, 3]
f(4, L) # [1, 2, 3, 4]
f(100) # [100]
f(200) # [100, 200]
f(200) # [100, 200, 200]
解决方法:
# 以上函数改写如下:
def f(n, lst=None):
if lst is None:
lst = []
lst.append(n)
print(lst)
模块 Module
-
什么是模块:
模块是一个包含有一系列数据,函数,类等组成的程序组
模块是一个文件,模块文件名通常以 .py 结尾 -
作用:
让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的数据,函数和类等可提供给其它模块或程序使用 -
模块的分类:
- 内置模块,在解析器内部可以直接使用(通常用C语言编写)
- 标准库模块,安装python时已安装,且可以直接使用
- 第三方模块(通常为开源,需要自己安装)
$ pip3 install xxxx - 用户自己编写的模块(也可以作为其它人的第三方模块)
-
模块的导入语句:
import 语句- 语法:
import 模块名1 [as 模块新名1], 模块名2[as 模块新名2], … - 作用:
将某模块整体导入到当前模块中 - 用法:
模块名.属性名
如:import math
print(math.factorial(5))
print(“圆周率为:”, math.pi)
- 语法:
-
dir(obj) 函数,返回模块内所有属性的字符串列表
help(模块名) 可以查看模块相关的文档字符串 -
练习:
- 输入一个圆的半径,打印出这个圆的面积
- 输入一个圆的面积,打印出这个圆的半径
(要求用math模块内的函数和数据)
-
from import 语句
- 语法:
from 模块名 import 模块属性名1 [as 属性新名1], 模块属性名2 [as 属性新名2]
作用:
将某个模块的一个或多个属性导入到当前模块的作用域 - 示例:
from math import sin
from math import pi, e, cos
from math imoprt factorial as fac
print(sin(pi / 2) * fac(5))
- 语法:
-
from import * 语句
- 语法:
from 模块名 import * - 作用:
将某模块的所有属性导入到当前模块 - 示例:
from math import *
print(sin(pi / 2))
print(factorial(5))
- 语法:
-
dir 函数:
dir([对象]) 返回一个字符串列表- 作用:
- 如果没有参数,则返回当前作用域内所有变量的列表
- 如果给定一个对象作为参数,则返回这个对象的所有变量的列表
- 对于一个模块,返回这个模块的全部变量
- 对于一个类,返回类的所有类变量,并递归基类对象的所有变量
- 对于其它对象返回所有变量,类变量和基类变量
- 作用:
-
数学模块 math
模块名: math
import math
from math import sin,cos,pi
from math import * -
时间模块
模块名: time
文档参见:
python_base_docs_html/时间模块time.html -
练习:
写一个程序,输入你的生日- 算出你已经出生多少天?
- 算出你出生那天是星期几?
-
系统模块 sys
运行时系统相关的信息
模块名: sys -
练习:
-
编写函数 fun,其功能是计算下列多项式的和
f(n) = 1 + 1/1! + 1/2! + 1/3! +
… + 1/n!
求当n等20时,此函数的值 -
写一个程序,以电子时钟格式显示时间:
格式为:
HH:MM:SS 如: 15:58:26 -
编写一个闹种程序,启动时设置定时时间,到时间后打印一句"时间到!",然后退出程序
-