小小鹏 发表于 2020-8-17 17:27:01

鸭子类型

def calc(a, b, c):
      return (a + b) * c

>>> a = calc(1, 2, 3)
>>> b = calc(, , 2)
>>> c = calc('love', 'FishC', 3)
>>> print(a)
9
>>> print(b)

>>> print(c)
loveFishCloveFishCloveFishC


这段代码是怎么体现鸭子类型的呀

sunrise085 发表于 2020-8-17 17:44:38

首先你需要理解什么是鸭子类型是什么意思
所谓鸭子类型就是不关注参数的类型,只关注变量的行为操作

然后再看这段程序
calc函数传入三个参数(a, b, c),只要这三个参数能有进行(a + b) * c运算操作就可以执行,不会报错,不管这上参数是什么类型。
a = calc(1, 2, 3)传入的参数都是int类型,能够进行算数运算,可以执行
b = calc(, , 2)传入的前两个参数是列表,第三个参数是int,对于列表可以进行+运算,是拼接操作,然后*运算是复制拼接
c = calc('love', 'FishC', 3)传入的前两个参数是字符串,第三个参数是int,对于字符串可以进行+运算,是拼接操作,然后*运算是复制拼接

这不就体现了鸭子类型么?

陈尚涵 发表于 2020-8-17 18:48:44

sunrise085 发表于 2020-8-17 17:44
首先你需要理解什么是鸭子类型是什么意思
所谓鸭子类型就是不关注参数的类型,只关注变量的行为操作



大佬,学习到了{:10_256:}

小小鹏 发表于 2020-8-19 09:28:19

sunrise085 发表于 2020-8-17 17:44
首先你需要理解什么是鸭子类型是什么意思
所谓鸭子类型就是不关注参数的类型,只关注变量的行为操作



谢谢知道啦!
页: [1]
查看完整版本: 鸭子类型