通俗理解鴨子型別是幹什麼的

孫家俊!發表於2021-01-01

定義大家都看過了,我說點容易理解的,我預設大家都是學過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型變數。

所以,省事兒!

相關文章