Nasıl Python string ve int farkı nedir?
Aşağıdaki kod çıktı (as seen on ideone.com) ile açıklamalı
print "100" < "2" # True
print "5" > "9" # False
print "100" < 2 # False
print 100 < "2" # True
print 5 > "9" # False
print "5" > 9 # True
Birisi çıktı gibi olduğunu açıklayabilir mi?
Uygulama ayrıntıları
- Bu davranış, dil spec tarafından zorunlu ya da uygulayıcıları var mı?
- Büyük Python uygulamaları arasında bir fark var mı?
- Python dil sürümleri arasında bir fark var mı?
CEVAP
CPython uygulama ayrıntı: sayı yazın adlarına göre sıralanır dışında farklı Nesneleri, uygun karşılaştırma desteklemeyen aynı tür nesneleri kendi adresine göre sıralanır.
Sana iki dize ya da iki sayısal türleri sipariş ederken sipariş beklenen şekilde değiştirir string, sayısal için Sipariş tamsayılar için Sipariş) yapılır.
Sen bir sayısal düzen ve sayısal olmayan bir tür, sayısal türde her şeyden önce gelir.
>>> 5 < 'foo'
True
>>> 5 < (1, 2)
True
>>> 5 < {}
True
>>> 5 < [1, 2]
True
Sen de sayısal nerede iki uyumsuz tip sipariş ederken, onların typenames alfabetik sıraya göre sıralanmıştır:
>>> [1, 2] > 'foo' # 'list' < 'str'
False
>>> (1, 2) > 'foo' # 'tuple' > 'str'
True
>>> class Foo(object): pass
>>> class Bar(object): pass
>>> Bar() < Foo()
True
Tek istisna her zaman yeni-stil sınıfları önce gelen tarzı eski sınıflar.
>>> class Foo: pass # old-style
>>> class Bar(object): pass # new-style
>>> Bar() < Foo()
False
- Bu davranış, dil spec tarafından zorunlu ya da uygulayıcıları var mı?
no language specification var. language reference diyor ki:
Aksi takdirde, farklı nesneleri her zaman eşitsiz karşılaştırın ve sürekli ama keyfi olarak sıralanıyor.
Uygulama ayrıntı.
- Büyük Python uygulamaları arasında bir fark var mı?
Sadece resmi CPython uygulaması kullandım, çünkü bu bir cevap veremem, ama PyPy gibi Python diğer uygulamaları vardır.
- Python dil sürümleri arasında bir fark var mı?
Python 3'te.x davranışı bir tamsayı sipariş girişiminde şekilde değiştirildi ve bir dize bir hata yükseltmek
>>> '10' > 5 Traceback (most recent call last): File "", line 1, in '10' > 5 TypeError: unorderable types: str() > int()
Nasıl okunur bir metin Python string b...
Tam olarak nasıl android:özelliği XML ...
Memoization nedir ve nasıl Python kull...
Nasıl Unicode olanları yerine string N...
Nasıl libuv/ * Boost farkı nedir?...