logo

Python'da ördek yazmak nedir?

Bu dersimizde ördek yazmayı öğreneceğiz. Python'da popüler bir terimdir ve şunu söylemekten gelir: 'Eğer ördek gibi yürüyorsa, ördek gibi yüzüyorsa, ördek gibi görünüyorsa o zaman muhtemelen ördek olmalıdır.'

Yukarıdaki ifade bir ördeğin tanımlanması konusunda fikir vermektedir. Burada ördeğin genomik dizisine ihtiyacımız yok. Davranışlarından ve dış görünüşünden sonuca varıyoruz.

Python programlamada ördek yazmanın tam olarak ne anlama geldiğini tartışacağız.

Python takip ediyor EAFP (Af dilemek izin istemekten daha kolaydır) LBLY (Sıçramadan Önce Bak) felsefesi. EAFP bir şekilde 'ördek yazma' stiliyle bağlantılıdır.

Dinamik ve Statik Yazma Karşılaştırması

Duck yazımını kullanmanın ana nedeni, dinamik yazım için destek sağlamaktır. Python programlama . Python'da değişkenin veri türünü belirtmemize gerek yoktur ve farklı veri türü değerlerini daha sonraki kodlarda aynı değişkene yeniden atayabiliriz. Aşağıdaki örneği görelim.

Örnek -

 x = 12000 print(type(x)) x = 'Dynamic Typing' print(type(x)) x = [1, 2, 3, 4] print(type(x)) 

Çıktı:

düşmanca arama
 

Yukarıdaki kodda görebileceğimiz gibi, x değişkenine bir tamsayı atadık. int tip. Daha sonra aynı değişkene bir string ve bir liste atadık. Python yorumlayıcısı aynı değişkenin veri türlerindeki değişiklikleri kabul eder. Bu dinamik bir yazma davranışıdır.

Java, Swift gibi diğer birçok programlama dili statik türdedir. Değişkenleri veri türleriyle tanımlamamız gerekiyor. Aşağıdaki örnekte aynı şeyi Python yerine Swift kullanarak yapmaya çalışıyoruz.

Örnek -

 # integer value assigning in JavaScript var a = 10 # Assinging string in swift a = 'Swift language' 

Yukarıdaki kod derlenemiyor çünkü Swift dilinde bir dize atayamadık. Çünkü değişken A tam sayı olarak bildirildi.

Java'da veri türlerine referans

Ördek Yazma Kavramı

Daha önce Python'un dinamik tipte bir dil olduğunu tartışmıştık. Ancak dinamik yaklaşımı özel veri türleriyle kullanabiliriz. Aşağıdaki örneği anlayalım.

Örnek -

 class VisualStudio: def execute(self): print('Compiling') print('Running') print('Spell Check') print('Convention Check') class Desktop: def code(self, ide): ide.execute() ide = VisualStudio() desk = Desktop() desk.code(ide) 

Çıktı:

 Compiling Running Spell Check Convention Check 

Yukarıdaki kodda bir tane oluşturduk. Görsel stüdyo zorunda olan sınıf uygulamak() yöntem. Masaüstü sınıfında, ide'yi code()'da argüman olarak ilettik. Bir gider bir nesnesidir Görsel stüdyo sınıf. İde'nin yardımıyla, uygulamak() VisualStudio sınıfının yöntemi.

Başka bir örnek görelim.

Örnek - 2

 class Duck: def swim(self): print('I'm a duck, and I can swim.') class Sparrow: def swim(self): print('I'm a sparrow, and I can swim.') class Crocodile: def swim_walk(self): print('I'm a Crocodile, and I can swim, but not quack.') def duck_testing(animal): animal.swim() duck_testing(Duck()) duck_testing(Sparrow()) duck_testing(Crocodile()) 

Çıktı:

 I'm a duck, and I can swim. I'm a sparrow, and I can swim. Traceback (most recent call last): File '', line 24, in File '', line 19, in duck_testing AttributeError: 'Crocodile' object has no attribute 'swim' 

Yukarıdaki kodda Duck sınıfının örneği çağrılarak yansıtılır. ördek_testi işlev. Bu aynı zamanda aşağıdakileri uygulayan Sparrow sınıfında da olur: yüzmek() işlev. Ancak Crocodile sınıfı söz konusu olduğunda ördek testi değerlendirmesinde başarısız olur çünkü aşağıdakileri uygulamaz: yüzmek() işlev.

geliştirici modunu kapatma

Ördek yazımı EAFP'yi nasıl destekler?

Ördek yazımı EAFP için en uygun stildir çünkü 'tip' nesnenin. Sadece onunla ilgilenmemiz gerekiyor davranış Ve kabiliyet . Aşağıdaki ifadeleri görelim.

Çok sayıda if-else bloğu gördüğümüzde, bu bir LBYL kodlama stilidir.

Ancak çok sayıda try-hariç blok görürsek, o zaman bunun bir EAFP kodlayıcı olması muhtemeldir.