SORU
5 Ocak 2012, PERŞEMBE


'' ve '' anahtar kelimeler kullanarak sözdizimi sipariş

Üyelik denetlerken, kullanılıp emin hissediyorum:

'ham' not in 'spam and eggs'

Veya alternatif olarak:

not 'ham' in 'spam and eggs'

Kararsızlık seviyem kaç tane içtim dizeleri listesi çevreleme, sözlük anahtarları... ve kontrol ediyorum bağlı olarak tereddüt gibi görünüyor.

  1. Bu iki formları her zaman eşittir? Ve,.. Yani eğer
  2. Başvuru bir yerde tercih edilen sözdizimi dokümanlar var mı?

CEVAP
5 Ocak 2012, PERŞEMBE


Onlar her zaman aynı sonucu verir.

Aslında "" operasyon "yerine" operasyon ve sonucu inkar: . bir değil, bir tek gerçekleştirmek için özel kasalı görünüyor içinde

>>> import dis

>>> def notin():
    'ham' not in 'spam and eggs'
>>> dis.dis(notin)
  2           0 LOAD_CONST               1 ('ham')
              3 LOAD_CONST               2 ('spam and eggs')
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE    

>>> def not_in():
    not 'ham' in 'spam and eggs'
>>> dis.dis(not_in)
  2           0 LOAD_CONST               1 ('ham')
              3 LOAD_CONST               2 ('spam and eggs')
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE    

>>> def not__in():
    not ('ham' in 'spam and eggs')
>>> dis.dis(not__in)
  2           0 LOAD_CONST               1 ('ham')
              3 LOAD_CONST               2 ('spam and eggs')
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        

>>> def noteq():
    not 'ham' == 'spam and eggs'
>>> dis.dis(noteq)
  2           0 LOAD_CONST               1 ('ham')
              3 LOAD_CONST               2 ('spam and eggs')
              6 COMPARE_OP               2 (==)
              9 UNARY_NOT           
             10 POP_TOP             
             11 LOAD_CONST               0 (None)
             14 RETURN_VALUE      

Ben sanıyordum başlarda hep aynı sonucu verdi, ama o not kendi başına sadece bir düşük öncelik mantıksal olumsuzluk operatörü olabilir uygulanan a in b kolayca herhangi bir mantıksal ifade, oysa not in ayrı bir operatör için rahatlık ve açıklık.

Demontaj yukarıda ifşa oldu! not tabii ki mantıklı bir olumsuzluk operatörü ise, form not a in b aslında genel operatörünü kullanarak değil, böylece özel kasalı gibi görünüyor. Bu not a in b tam anlamıyla a not in b yerine, sadece aynı değere neden olan bir ifade olarak aynı ifade ediyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007