Python中*args和**kwargs的区别

187 阅读1分钟

*args 将传递进函数多余的非命名参数解析为一个元组供函数使用,**kwargs命名参数解析为字典供函数使用。两者都是用与处理参数的。

from time import sleep, ctime

class ThreadFunc:
    # args 解析除第一个参数以外的剩余普通参数,kwargs 解析命名参数 
    def __init__(self, func, *args, **kwargs) -> None:
        self.func = func
        self.args = args
        self.kwargs = kwargs
        print(args, kwargs)

    def __call__(self, *args, **kwds):
        print(args, kwds)

def loop(nses):
    print(f'start at {ctime}')
    sleep(nses)
    print(f'end at {ctime}')

tf = ThreadFunc(loop, 3, name='loop')   # (3,) {'name': 'loop'}