doraemon的python 函数与装饰器(哎呀,忘记传了)

5.10 函数中高级

5.10.1 函数可以当做返回值

def func():
   print(123)
   
def bar():
   return func

v = bar()

v()

 

5.10.2 闭包

def func(name):
   def innner():
       print(name)
   return inner

v1 = func('liujia')
v1()
v2 = func('eric')
v2()

总结:

  • 函数执行的流程分析(函数式谁创建的)

  • 闭包概念:为函数创建一块区域并为其维护自己数据,以后执行时候方便调用

5.10.3 高阶函数

  • 将函数当做参数传递

  • 把函数当做返回值

注意:对函数进行赋值

def func():
   print(123)
   
def bar(a):
   return a

v1 = bar(func)
v1()

5.11 装饰器

#装饰器的编写
def func(arg):
   def inner(*args,**kwargs)
  #需要添加的操作
  ret = arg(*args,**kwargs)
       #需要添加的操作
       return ret
   return inner

@func
def index():
   print(123)
   
   
#执行函数,自动触发装饰器
v = index()
print(v)

       
#装饰器编写格式
def 外层函数(参数):
   def 内层函数(*args,*kwargs)
  return 参数(*args,**kwargs)
   return 内层函数

@外层函数
def index():
   pass

index()

5.12 推导式

  • 列表的推导式

    • 基本格式

#目的:方便生成一个列表

v1 = [i for i in range(10)]
v2 = [ i+100 for i in range(10)]
v3 = [99 if i>5 else 66 for i in range(10)]
v4 = [lambda : 100 for i in range(10)]
v5 = [lambda : 1 for i in range(10)]


v8 = [lambda x:x*i for i in range(10)] # 新浪微博面试题
# 1.请问 v8 是什么?
# 2.请问 v8[0](2) 的结果是什么?

def num():
   return [lambda x:i*x for i in range(4)]
# num() -> [函数,函数,函数,函数]
print([ m(2) for m in num() ]) # [6,6,6,6]
  • 集合推导式

v1 = { i for i in 'alex' }
  • 字典推导式

v1 = {'k'+str'i':i for i in range(10)}

 

原文地址:https://www.cnblogs.com/doraemon548542/p/11194003.html