SORU
4 Temmuz 2012, ÇARŞAMBA


Python güçlü bir şekilde yazılmış mı?

Python güçlü bir dildir ki bağlantılar rastladım.

Ancak, bunu yapamazdın kesinlikle yazılmış dilde düşündüm :

bob = 1
bob = "bob"

Kesinlikle yazılan bir dil çalışma zamanında tür değiştirmeyi kabul etmedi diye düşündüm. Belki güçlü/zayıf tür yanlış (ya da) simplist bir tanımı var.

Güçlü ya da zayıf yazılı dil Python mi?

CEVAP
4 Temmuz 2012, ÇARŞAMBA


Python güçlü, dinamik yazılmış.

  • Güçlüyazmaya değer türünü aniden değiştirmek anlamına gelir. Bir dize yalnızca rakam içeren Perl bunun gibi sihirli bir numarası haline gelmez. Yazın her değişim açık bir dönüşüm gerektirir.
  • Dinamikyazarak çalışma zamanı nesneleri (değerleri) değişkenler bir tür olduğu statik yazmaya karşı bir tür var, demektir.

Senin örneğin gibi

bob = 1
bob = "bob"

Bu değişken türü yok çünkü çalışır; herhangi bir nesnenin adı olabilir. bob=1, type(bob) bob="bob" 7 ** ama döndüren bulabilirsiniz sonra döner str. (Bağımsız değerlendirir, değer türünü döndürür o zaman type normal bir işlevi olduğunu unutmayın.)

İşaretçiler ve tamsayıların oldukça fazla değiştirilebilir olduğunu, böylece C, zayıf, statik olarak yazılan, olan eski lehçeleri ile bu kontrast. (Modern ISO C birçok durumda dönüşüm gerektirir, ama benim hala derleyici varsayılan olarak bu konuda hoşgörülü.)

Güçlü vs zayıf yazmaya boolean bir seçim daha bir sürecin daha olduğunu eklemeliyim. C C daha güçlü yazarak (daha fazla dönüşüm gerekli) vardır, ama yazın bu sistemi kullanarak işaretçi yayınları tarafından altüst olabilir.

Python gibi dinamik bir dil yazın sisteminin gücünü gerçekten ilkel ve kütüphane fonksiyonları farklı cevap nasıl belirlenir. E. g., iki sayı üzerinde çalıştığı için aşırı yüklendiyaiki dize, ama bir dize ve bir sayı değil. Bu tasarım seçimi hayata geçirildiği yapılır, ama gerçekten dilin semantiği gelen bir zorunluluk aşağıdaki değil. Aşırı 13* *özel bir tür aslında, tamamen bir dizi dönüştürmek için bir şey yapabilirsiniz:

def to_number(x):
    """Try to convert x to a number."""
    if x is None:
        return 0
    # more special cases here
    else:
        return float(x)  # works for numbers and strings

class Foo(object):
    def __add__(self, other):
        other = to_number(other)
        # now do the addition

(Bu tamamen, kesinlikle yazılan tanıdığım tek dil, aka kesinlikle yazılı, türleri tamamen ayrık olduğu Haskell ve aşırı yükleme sadece kontrollü bir form türü sınıflar ile mümkündür.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • pucksz

    pucksz

    24 Mart 2006
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007