zoukankan      html  css  js  c++  java
  • 20 函数总结

    # 函数的定义和调用
    # def 函数名(形参):
    #函数体
    #return 返回值
    #调用 函数名(实参)
    # 站在形参的角度上 : 位置参数,*args,默认参数(陷阱),**kwargs
    # 站在实参的角度上 : 按照位置传,按照关键字传
    # 返回值:没有返回值 返回一个值 返回多个值
    # 接收返回值:没有返回值不接收,返回一个值用一个变量接收,返回多个值用一个变量或者对应数目的变量接收
    # 闭包函数 —— 在内部函数引用外部函数的变量
    # 装饰器函数—— 装饰器一定是闭包函数
    # 装饰器的作用 : 在不改变原来函数的调用方式的情况下 在这个函数的前后添加新的功能
    # 完美的符合了一个开发原则 :开放封闭原则
    # 对扩展是开发的
    # 对修改是封闭的

    # 基础的装饰器
    from functools import wraps
    def wrapper(func):
        @wraps(func)
        def inner(*args,**kwargs):
    #         '''在函数被调用之前添加的代码'''
            ret = func(*args,**kwargs)   # func是被装饰的函数 在这里被调用
    #        '''在函数被调用之后添加的代码'''
            return ret
        return inner
    #使用 —— @wrapper
    @wrapper
    def func():   #inner
        pass
    
    func.__name__
    # 带参数的装饰器
    def outer(形参):
        def wrapper(func):
            def inner(*args,**kwargs):
                '''在函数被调用之前添加的代码'''
                ret = func(*args,**kwargs)   # func是被装饰的函数 在这里被调用
                '''在函数被调用之后添加的代码'''
                return ret
            return inner
        return wrapper
    @outer(True)
    def func():
        pass
    # 多个装饰器装饰一个函数
    def wrapper1(func):
            @wraps(func)
            def inner(*args,**kwargs):
                print('before 1')
                print('******')
                ret = func(*args,**kwargs)   # func是被装饰的函数 在这里被调用
                '''在函数被调用之后添加的代码'''
                return ret
    def wrapper2(func):
        @wraps(func)
        def inner(*args,**kwargs):
            print('before 2')
            ret = func(*args,**kwargs)   # func是被装饰的函数 在这里被调用
            '''在函数被调用之后添加的代码'''
            return ret
      @wrapper1
      @wrapper2
      def func():
          print('111')

     

  • 相关阅读:
    Anaconda下载与安装
    短语,直接短语,句柄,素短语,最左素短语区分
    sublime text安装package control
    Json数据解析
    hbase shell命令
    Web三级联动,数据库到界面
    解决C#窗体项目在win10运行模糊的问题
    Java通过反射访问及修改类内的私有变量
    PyCharm更改.PyCharm配置文件夹存储位置
    MineCraft Forge开发mod踩坑记录
  • 原文地址:https://www.cnblogs.com/bydzxzy/p/9652335.html
Copyright © 2011-2022 走看看