SORU
9 Ocak 2013, ÇARŞAMBA


Python Hiçbiri karşılaştırıldığında: kullanımı "" ==etmeli miyim?

Olası Çoğalt:
When is the `==` operator not equivalent to the `is` operator? (Python)

Python 2 kullanıyorum.x.

Editörüm bana bir 'uyarı' my_var == None ama my_var is None kullandığım zaman herhangi bir uyarı ben karşılaştırmak altını verir.

Python kabuğunda bir test yaptım ve her ikisi de geçerli sözdizimi vardır, ama editörüm my_var is None tercih olduğunu söyleyerek gibi görünüyor belirledi.

Bu yüzden, neden bu davayı?

CEVAP
9 Ocak 2013, ÇARŞAMBA


Özet:

Bir nesnenin karşı kontrol etmek istediğinizde is kullanınkimlik(örneğin, eğer var None olup olmadığını görmek için kontrol). Kontrol etmek istediğinizde == kullanıneşitlikvar 3? eşit olarak (örn.

Açıklama:

my_var == None True döner nerede özel sınıflar var

e.g:

class Negator(object):
    def __eq__(self,other):
        return not other

thing = Negator()
print thing == None    #True
print thing is None    #False

is nesne denetlerkimlik. Aslında aynı nesne (sadece değil . sadece 1 nesne olup olmadığını kontrol edin my_var is None bunu None var ^em>eşdeğernesneleri)

Başka bir deyişle, == is nesne kimlik kontrolleri ise: denklik nesneden nesne için tanımlanmış olan) bir kontrol edin

lst = [1,2,3]
lst == lst[:]  # This is True since the lists are "equivalent"
lst is lst[:]  # This is False since they're actually different objects

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • newport83

    newport83

    19 HAZİRAN 2006