继续接着上次的常见面试基础知识
鸭子类型:关注的是如何使用。例如:不使用鸭子类型的语言中,我们编写一个函数,参数是一个鸭子类型对象,并调用它的走和叫方法。而使用鸭子类型的语言中,一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。*args和**kwargs:刚开始接触,碰到这样的参数多少有些懵逼,这两在python中意味着可变参数,用于接受参数传递。*args是一个元组,表示任意一个无名参数。当一个函数火方法需要传入很多参数时,可以使用这个可变参数。**kwargs是一个字典,表示关键字参数。同时使用*args和**kwargs时,*args必须在**kwargs之前。值得注意的是,虽然*args是元组,但是传入参数的时候并不要()表示;同理**kwargs传入参数的时候也不要按字典的格式{},看如下例子:
@property:@property能够将一个方法变成属性调用,在对实例操作时,不暴露接口,通过getter和setter方法实现。例如:class test(object):
@property
def score(self):
return self._score
@score.setter
def score(self,v):
self._score = v
#调用
t = test()
t.score = 60
print(t.score)