python核心高级学习总结1---------*args和**kwargs
*args 和 ** kwargs 的用法
首先,这两者在用法上都是用来补充python中对不定参数的接受。
比如下面的列子
def wrappedfunc(*args, **kwargs):
print("%s called at %s"%(func.__name__, ctime()))
这是一个函数
其次,在调用时候 1. wrappedfunc('1','2')#这样会自动将'1','2'这两个参数赋值给args
此时args这个变量就是一个list
2. wrappedfunc(a='1',b='2')#这样会自动将a='1',b='2'这两个键值对传递给kwargs
此时kwargs这个变量就是一个dict
如果对Python这两个类型熟悉的,其实也可以理解,当传递的值是两者混合的时候,python编译器会将这两者分别代入对应的list和dict来使用。
callable()方法的使用
callable 用来检查变量的类型,对于函数或对象返回true,对于普通的值类型返回false。需要注意的是,类对象返回的True,类实例对象返回的是False,它在装饰器中的用法如下,装饰器函数其实是这样⼀个接⼝约束, 它必须接受⼀个callable对象作为参数, 然后返回⼀个callable对象。 在Python中⼀般callable对象都是函数, 但也有例外。 只要某个对象重写了 __call__() ⽅法, 那么这个对象就是callable的。
>>> re.match(r"aa(\d+)","aa2343ddd").group(1)
'2343'
>>> re.match(r"aa(\d+?)","aa2343ddd").group(1)
'2'
>>> re.match(r"aa(\d+)ddd","aa2343ddd").group(1)
'2343'
>>> re.match(r"aa(\d+?)ddd","aa2343ddd").group(1)
'2343'