'JudyJudyJudyJudy' Python中的多态
从上面两个例子中看到,times函数中表达式x*y的意义完全取决于x和y的对象类型,同样的函数,在一个实例下执行的是乘法,在另一个实例中执行的却是赋值。Python将对某一对象在某种语法下的合理性交由对象自身判断。这种依赖类型的行为称为多态。
例子:寻找序列的交集
def intersect(seq1, seq2):
res = []
for x in seq1:
if x in seq2:
res.append(x)
return res
或者用经典的列表解析表达式来替代:
>>>[x for x in seq1 if x in seq2] 这个单个的代码段可以应用于整个的对象类型范围。
匿名函数:lambda
除了def之外,Python还提供了一种生成函数对象的表达式形式lambda。不同于def,它返回一个函数,而不是将这个函数赋值给一个变量名。这也是为什么有时候称lambda为匿名函数的原因(没有函数名)。
lambda argument1, argument2,... argumentN : expression using arguments