2020-11-08

python课堂笔记(二)
一、高阶函数
1.定义:
1)可以使用函数对象作为参数的函数;
2)可以将函数作为返回值的函数。
2.函数对象:
定义好的函数(未被执行),使用函数名调用(不加括号)。
3.将函数作为参数的高阶函数,通过传入不同的函数,可以使执行的结果完全不同。
例:
def add(f,x,y):
return f(x)+f(y)
print(add(lambda x:x**2,3,4))
print(add(lambda x:str(x),3,4))
print(add(lambda x:x/2,3,4))

二、内置高阶函数
1.map数据映射函数
map(func,list)#生成器对象
res = map(lambda x:x2,range(10))
print(list(res))
#将函数作用在list的每一个序列上
2.map实现原理
def my_map(f,lis):
new_list = [ ]
for i in lis:
new_list,append(f(i))
return new_list
print(my_map(lambda x:x
0.5,range(1,10))
#reduce累计函数
#from functools import reduce
#print(reduce(lambda x,y:x*y,range(1,6))
input()

三、装饰器函数
1.定义:修改增加其他函数功能的函数
1)不修改原函数的代码;
2)一个装饰器函数可以给n个函数添加或修改相同的功能。
2.实现方法:
1)是一个嵌套函数;
2)是一个高阶函数,将原函数作为参数,将内部函数作为返回值;
3)将原函数替换为内部函数,原函数在内部函数中执行保留原函数的功能。

例1:
给函数增加“开始执行…”和“结束执行…”
def log_info(function):
def run(*args,**kwargs):
print(“开始执行…”)
res = function(*args,**kwargs)
print(“执行结束…”)
return res
return run
3.@log_info #装饰器语法糖
def funcl(n):
for i in range(0,n,2):
print(i,end = “ ”)
print()
return “ok”
print(funcl)
#log_info(funcl)(20)
#有参装饰器(给无参装饰器上再加一层函数用于接收参数。)
例2:
执行时间测试函数,计算某函数执行n次的平均时间
import time
def run_time_test(n):
def run_time(function):
def run(kargs,**kwargs):
#获取当前时间戳 1970-1-1 00:00:00(格林威治天文台时间)
start_time = time.time()
for i in range(n):
one_time = time.time()
res = function(kargs,**kwargs)
print(“第{}执行的时间为:{}.format(i+1,time.time t_time = time.time()- start_time”)
avg_time = t_time/n
print(“{}执行的总时间为:{},平均时间为:{}”.format(n,t_time/n)
return res
return run
return run_time
@log_info
@run_time_test(10)
def func2(n):
s = 0
for i in range():
for j in range(n):
s += i
j
k
return s
print(func2(150))
#print(log_info(run_time_test(10)(func2))(150))
input()

四、元组生成器
1.生成器的使用场景;
2.生成器或处理大量数据,使用生成器一个个的处理(生成),用于节省内存空间;
3.range(100)产生某个范围内的整数;
4.斐波那契序列(兔子序列);
5.例:
0 1 1 2 3 5 8 13 21 34 55 89 144 233
def feibo(n):
a,b,s = 0,1,1
while s < n:
s += 1
yield a #返回数据不会结束函数
a,b = b,a + b
for i in feibo(10000):
print(i)
input()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值