编程语言
首页 > 编程语言> > python-装饰器-被装饰函数带参(入参*args、**kwargs学习)

python-装饰器-被装饰函数带参(入参*args、**kwargs学习)

作者:互联网

import time
# 装饰函数
def show_time(func):
    def inner(*args,**kwargs):
        begin_time = time.time()
        func(*args,**kwargs)
        end_time = time.time()
        print('服务器响应时间:',end_time-begin_time)
    return inner

# 被装饰函数,有入参
@show_time
def foo(test_case_name):
    print(test_case_name)
    time.sleep(1)
    
# foo = show_time(foo)
foo('有入参')

一、*args

【1】*args:表示位置参数,入参类型是列表或者元祖,发送一个非键值对的可变数量的参数列表给函数

【2】*:会把传入的多个参数打包成元祖,赋值给形参args

# *args:发送一个非键值对的可变数量的参数列表给函数
# * :会把传入的多个参数打包成元祖,赋值给形参args
def fun1(*args):
    print(args)
fun1(1) # 1
fun1(1,2) # 1 2
fun1((1,2),1) # (1,2) 1
fun1([1,2],2) # [1,2] 2
fun1('aaaaaa')
# fun1(a=1,b=2) # 关键字参数不行,会报错

二、**kwargs

【1】**kwargs:发送一个键值对的可变数量的参数列表给函数

【2】**:会把传入的多个键值对打包成字典,赋值给kwargs

# **kwargs:发送一个键值对的可变数量的参数列表给函数
# ** :会把传入的多个键值对打包成字典,赋值给kwargs
def fun2(**kwargs):
    print(kwargs)
fun2(a=1) # {'a': 1}
fun2(a=1,b=2) # {'a': 1, 'b': 2}

 

标签:fun1,python,args,键值,time,kwargs,装饰,def
来源: https://www.cnblogs.com/flowers-pansy/p/16247022.html