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

    1、拆包、*args、**kwargs

    *args是可变参数,接收的是一个tuple;

    **kwargs是关键字参数,接收的是一个dict。

    def test(a,b,*args,**kwargs):
        print(a)
        print(b)
        print(args)
        print(*args)
        print(kwargs)
    
    
    test(1,2,3,4,name='5',age=6)
    
    运行结果:
    1
    2
    (3, 4)
    3 4
    {'name': '5', 'age': 6}
    示例

    2、闭包:延伸了作用域的函数,访问定义体之外定义的非全局变量

    (1)外函数返回内函数的结果

    (2)外函数将临时变量传递给内函数

    (3)外函数无法改变局部变量的值,需要用nonlocal才可修改

    3、装饰器

    多个装饰器的情况下,下面的装饰器先执行

    functool.lru_cache(maxsize,typed)

    singledipatch

    def f(func):    #闭包
        def call_f(*args,**kwargs):
            print(1)
            print(2)
            return func(*args,**kwargs) #拆包
        return call_f
    
    @f  #装饰器,test = f(test)
    def test(num,*args,**kwargs):
        print(num)
        print(args)
        print(kwargs)
        return 'ok','ok'    #返回元组
    
    ret = test(100)
    print(ret)
    
    
    ##1
    ##2
    ##100
    ##()
    ##{}
    ##('ok', 'ok')
    总结示范
  • 相关阅读:
    hive sql基础了解
    创建自增字段,修改字段
    flysql 里两种传参的方式
    创建有赞商品资料
    cortable 使用方法
    学会如何使用,pycharm,和gitlanb
    进程和线程
    创建商品资料模板
    SAP 实例 5 CFW Events
    SAP 实例 4 CFW
  • 原文地址:https://www.cnblogs.com/ybxw/p/12551607.html
Copyright © 2011-2022 走看看