zoukankan      html  css  js  c++  java
  • 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)}

     

  • 相关阅读:
    eclipse中的TODO和FIXME
    使用mui框架后a标签无法跳转
    java.lang.OutOfMemoryError: Java heap space异常
    mysql中表触发器的简单使用
    编写第一个 Java 程序
    QDialog类exec()与show()的区别
    Qt中信号槽connect的多种类型
    2.3 UML活动图
    2.2 UML用例模型
    2.1 uml序言
  • 原文地址:https://www.cnblogs.com/doraemon548542/p/11194003.html
Copyright © 2011-2022 走看看