时间段【1】 9:00-20:00
1、课堂笔记
'''生成器generator''' # import time
# def nature(): # n = 1 # while True: # ''' # return n 1.返回n的值 2.立即结束函数的执行 # yield n 1.返回n的值 2.立即暂停函数的执行
# ''' # #print(n) # yield n # n += 1
# g = nature() # for e in g: # print(e) # time.sleep(1) ''' 高阶函数
函数名本质上就是一个指向该函数的变量 '''
print(abs(-5)) print(abs) f = abs print(f(-5)) abs = 7 print(abs) ''' 函数作为参数传入 一个函数A可以接收另一个函数B作为参数,我们把这个函数A称为高阶函数 ''' def add(x,y,f): return f(x)+f(y) print(add(3,4,f)) print(add(-3,-4,f))
def g(x): return x*x
print(add(3,4,g))
#map()函数 map映射/reduce()/filter() r = map(g,[1,2,3,4,5]) print(list(r))
''' 函数作为返回值 '''
def s(*args): ss = 0 for arg in args: ss += arg return ss
print(s(1,2,3,4,5)) print(s(1,3,5,7)) ''' lazy_s()函数中定义了内部函数s(),而s()函数中有引用了外部函数 '''
def lazy_s(*args): #定义函数 def s(): ss = 0 for arg in args: ss += arg return ss return s
h = lazy_s(1,2,3,4) print(h) print(h()) ''' 匿名函数 lambda 表达式 '''
def g(x): return x*x r = map(g,[1,2,3,4,5]) print(list(r))
r = map(lambda x:x*x*x,[1,2,3,4,5]) #匿名函数缺函数名 print(list(r))
f = lambda x,y:x+y print(f(2,3))
#将下面的函数用匿名函数重写 def is_odd(n): return n%2 == 1 print(is_odd(3)) print(is_odd(2))
a = lambda n:n%2==1 print(a(4)) #创建一个装饰器 def log(func): ''' 将要被装饰的函数 ''' def wrapper(*args,**kw): print('调用函数:%s'%func.__name__) return func(*args,**kw) return wrapper import time
@log # @:装饰器 now = log(now) def now(): print(time.strftime('%Y-%m-%d %H:%M:%S'))
now() print('------------------------------------------') f = log(now) f()
print(now.__name__) print(f.__name__) now.__name__='现在' print(f.__name__) def log2(text): def decorator(func): @functools.wraps(func) def wrapper(*args,**kw): #wrapper.__name__=func.__name__ print('%s:%s'%(text,func.__name__)) return func(*args,**kw) return wrapper return decorator
@log2('执行函数') def now2(): #print('调用函数:%s'%now.__name__) print(time.strftime('%Y-%m-%d %H:%M:%S'))
now2() print(now2.__name__) 时间段【2】 21:00-23:00 完成课后作业,对上课所讲的内容和周边同学讨论 一.今天遇到的问题 高阶函数以及闭包的实现过程不太理解 二.问题解决方案 A. 怎样解决 周边同学讨论,上网查资料
|