通俗理解鸭子类型是干什么的

定义大家都看过了,我说点容易理解的,我默认大家都是学过C语言的。
还记得C语言怎么定义变量的不。

int x;
x = 1;
float y;
y = 1.1;
char z;
z = "hello";

对吧,编译器知道你定义的x是int型,y是float型,z是char型,因为你告诉它了。所以当你给变量x赋值x= “hello”;时,就会报错,因为x是int型变量,你却让它等于字符串。

再看一下python这些动态语言和小部分静态语言是怎么定义变量的。

x = 1
y = 1.1
z = "hello"

x是int型,y是float型,z是char型,这是你知道的。但是,你并没有告诉编译器啊,编译器知道吗?
知道!怎么知道的?
鸭子类型来了,x = 1,因为1长得像int型(特征),所以x是int型变量。
y = 1.1,因为1.1长得像float型(特征),所以y是float型变量。
z = “hello”,因为"hello"长得像str型(特征),所以z是str型变量。

所以,省事儿!

你可能感兴趣的:(编程语言,python,c语言)