2010-02-22 9 views
5

Eğer doğru anlarsam a <> b, a != b ve Python not a == b işlevlerindeki aynı şeydir, ancak diğer sürümlerde <> kullanmak için bir neden var mı? Ben Python yeni gelenler için ortak bir hata not a is ba != b veya not a == b aynı olduğunu düşünmek olduğunu biliyoruz.Python (veya genel programlama). Neden <> yerine kullanın! = Ve risk var mı?

  1. <> ile benzer yanlış anlamalar yaşanıyor mu, yoksa tam olarak aynı işlevde mi? kullanmak için hiçbir neden karşılıksız heterojenlik dışında hiçbir dezavantajları ya (bir stil sorunu) -
  2. o vb bellek, işlemci, daha maliyet getirir
  3. Python 2'de
+0

@ S.Lott Oy vermedi. Neden bu kadar düşmansın? Bak, başarılı yayınlanmış kitaplar yazan bir uzman olan Alex Martelli, cevap vermek için zaman ayırdı. – orokusaki

cevap

15

<>!= için tam eşanlamlı olduğunu . Uzun cesaretini oldu ve şimdi python <> kullanmamalısınız Python 3.

+1

Ah, 3'te gitti benim için yeterince iyi bir sebep. Guido bundan hoşlanmadıysa, ben de :) (2 ile 3 arasında bir destek olduğunu varsayalım). – orokusaki

+1

Yeni Python Tercüme Partisi de kendiniz bulabilirsiniz: http://www.pythontranslationparty.appspot.com/6002/ Bu dengeyi bulmaya çalışırken, 2to3 ve 3to2 aracılığıyla arda kodunuzu çalıştırır. – jcdyer

+0

@jcd teşekkürler. Bu şık bir araç. – orokusaki

0

yılında kaldırılmıştır.

+7

Bu berbat bir cevaptır. Detay vermez, kendini açıklayıcı değildir ve hafif derecede kabadır. – Sean

+0

@Sean: Bu soruya herhangi bir açıklama yapılmasına gerek yok, '<' '** 10 yıl boyunca kullanılmıyor **. Python belgelerine ait Python 2.0 sürümlerinin her sürümünde açıkça belirtiliyor. Kendisine '! =' Operatörü ile sahip olabileceği farklılıklar ile uğraşmaya gerek yoktur. Kullanmayın: tartışmak için sorun yok. – SilentGhost

+2

@SilentGhost: Tartışılacak bir şey olmadığını düşünüyorsanız, o zaman 'cevap' yazmayın. Konumunuzu kolayca haklı çıkarırsınız, bunun yerine cevabınız soruya hiç hitap etmediğinde neden kısılmış olursunuz? –

8

Sadece bir bilgiçlik not: <> operatör misnamed Bir anlamda ise (misdenoted?). a <> b doğal anlam a < b or a > b (tabii ki sadece bir kez a ve b değerlendirilmesi) olarak yorumlanabilir olabilir, ama hepsi değil sıralamalar toplam sıralamalar olduğundan, bu gerçek semantik eşleşmiyor. Örneğin, 2.0 != float('nan') doğru, ancak 2.0 < float('nan') or 2.0 > float('nan') yanlıştır.

!= operatör böyle olası yanlış anlaşılmaya tabi değildir.

Python 3.x için <>'u düşürme kararında ilginç bir şey (şiir ile!) Için bkz. Requiem for an operator.

+0

Oyulmuş, kendi cevabımda söylemek istediğim buydu. Ben onu sildim. – Kaltezar

+0

Aslında <'' bir şekilde '<' or '> 'ile ilgili olduğunu mu söylüyorsun? Ve yine de, '' 'ya da' '' * 'nin de * '' veya '<' ile ilgili olduğunu iddia etmiyorsunuz. Neden bir çift karakter ('<>') sihirli olarak '<' or '> 'ile ilgili, ancak diğer karakter çiftleri (' <<','>> ') sihirli bir şekilde ilişkili değildir? Ne dediğini anlamadım. Bunu açıklayabilir misin? –

+2

Hayır, değilim; ama oldukça makul (yanlış) bir yorumdur ve <=' and '> = 'tanımlarına uymaktadır. <<' and '>> ile aynı yanlış yorumlama riskini görmüyorum, ama belki de bu sadece benim. Benzer şekilde, IEEE 754'ün (2008 sürümü) eşit olmayan işlem için olası bir yazım olarak '<>? 'daha az' ve 'büyüktür' davaları. –

İlgili konular