*args和**kwargs使用
可变位置参数:
*args:是一个元组,传入的参数会被放进元组里。
可变关键字参数:
**kwargs:是一个字典,传入的参数以键值对的形式存放到字典里。
def test1(*args): print(type(args),args) test1(1,2,3) def test2(**kwargs): print(type(kwargs),kwargs) test2(a=1,b=2) def test3(*args,**kwargs): print(type(args),args) print(type(kwargs), kwargs) print(args,kwargs) test3(1, 2, 3,a=1,b=2)
out:
<class 'tuple'> (1, 2, 3)
<class 'dict'> {'a': 1, 'b': 2}
<class 'tuple'> (1, 2, 3)
<class 'dict'> {'a': 1, 'b': 2}
(1, 2, 3) {'a': 1, 'b': 2}
target和args使用
target一般是一个可调用对象,比如函
def work(threadName, delay): print(threadName,delay) class Entity: def __init__(self,a): self.a=a def __call__(self, *args,**kwargs): print(args,kwargs) #python threading.Thread(target=***, args=(****,)) #target一般是一个可调用对象,比如函数 #如果你想让一个类作为这个参数,可以加上__call__方法,让类变为可调用对象 #如果你想让一个变量作为这个参数,可以重写这个变量所在类的__callable__方法,让变量可调 from threading import Thread t1=Thread(target=work,args=("Thread-1",1)) t1.start() e = Entity(1) t2=Thread(target=e,args=("Thread-2",3)) t2.start()