zoukankan      html  css  js  c++  java
  • python闭包、装饰器

    1、闭包 closure

        闭包是指引用了此函数外部嵌套函数作用域内的变量的函数

      闭包必须满足三个条件:
        必须有一个内嵌函数
        内嵌函数必须引用外部函数中的变量
        外部函数的返回值必须是内嵌函数

        def make_pow(y):
          def fn(x):
            return x ** y
          return fn
    
    
        pow2 = make_pow(2)
        print(pow2(10)) # 100
        del pow2 # 释放闭包函数, 同时释放闭包
          # 绑定的外部嵌套函数的执行环境
    View Code

      闭包的特点:
        闭包中外部嵌套函数中的变量不会在函数调用后立即销毁,而是被内嵌函数引用
      使用闭包的注意事项:
        由于闭包会使得函数中的变量都被保留在内存中,内存消耗比较大,所以不能滥用闭包

    2、装饰器 decorators(专业提高篇)
        装饰器是一个函数,主要作用是用来包装另一个函数或类(后面才讲)

      作用:
        在不修改被装饰函数的源代码,不改变被装饰的函数的调用方式的情况下添加或改变原函数的功能。

      函数装饰器的语法:
        def 装饰器函数名(fn):
          语句块
          return 函数对象

        @装饰器函数名 <换行>
        def 被装饰函数名(形参列表):
          语句块

        def mydeco(fn):
          def fx():
            print("++++++++++++++++")
            fn()
            print('----------------')
          return fx
    
    
    
        @mydeco
        def myfunc():
          print("myfunc函数被调用")
    
    
        # myfunc = mydeco(myfunc) # 添加装饰器
    
    
        myfunc()
        myfunc()
    View Code

    3、函数的文档字符串
        函数内第一次未赋值给任何变量的字符串是函数的文档字符串

      语法:
        def 函数名(参数列表):
          '函数文档字符串'
          语句块
      示例:
        def myfunc(a, b, c):
          '这是函数的文档字符串'
          pass
        >>> help(myfunc)
    5、函数的 __doc__属性
      __doc__属性用于绑定函数的文档字符串

    6、函数定义语句(def 语句)的完整语法:
      [@装饰器名1]
      [@装饰器名2]
      [...]
      def 函数名([位置形参],[*元组形参], [命名关键字形参],[**字典形参]):
        '''文档字符串'''
        语句块

  • 相关阅读:
    使用Redux管理你的React应用(转载)
    基于webpack使用ES6新特性(转载)
    在SublimeText上搭建ReactJS开发环境(转载)
    Javascript 严格模式详解
    HTML5探秘:用requestAnimationFrame优化Web动画
    requestAnimationFrame,Web中写动画的另一种选择
    Gulp自动添加版本号(转载)
    一小时包教会 —— webpack 入门指南
    React 入门实例教程(转载)
    走向视网膜(Retina)的Web时代
  • 原文地址:https://www.cnblogs.com/zhaoyang1997/p/10503344.html
Copyright © 2011-2022 走看看