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

Posted doraemon548542

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于doraemon的python 函数与装饰器(哎呀,忘记传了)的主要内容,如果未能解决你的问题,请参考以下文章

doraemon的python Flask框架 路由和配置

doraemon的python 守护进程和Process

python 高阶函数与装饰器

python闭包与装饰器

doraemon的python form组件(国庆大更新)

doraemon的python centos的入门