SORU
12 ŞUBAT 2011, CUMARTESİ


Orada C Python eşdeğer# boş birleşiyor operatör?

C# (kısa) kolay null atama sırasında kontrol etmek için izin veren null-coalescing operator (?? olarak yazılmış) var:

string s = null;
var other = s ?? "some default value";

Python bir karşılığı var mıdır?

Yapabileceğimi biliyorum:

s = None
other = s if s else "some default value"

Ama orada bile daha kısa bir yol s tekrar etmeye gerek yok).

CEVAP
12 ŞUBAT 2011, CUMARTESİ


other = s or "some default value"

Tamam, or operatörünün nasıl çalıştığını belirtmeliyiz. Boolean operator, boolean bağlamında çalışır. Eğer değerler boolean ise, operatörün amaçlar için boolean değerine dönüştürülür.

or operatör True False, bunun yerine, döner yanlış değerlendirmesi olmayan ilk terim yalnızca döndürür unutmayın.

Bu durumda, ifadenin boolean dönüştürüldüğünde 13* *True * * * ya da doğru olarak değerlendirilirse x döndürür. Aksi takdirde, y döndürür. Çoğu durumda, bu C ses çok aynı amaca'nın boş birleşiyor, operatör, ama unutmayın: . için hizmet edecektir

42    or "something"    # returns 42
0     or "something"    # returns "something"
None  or "something"    # returns "something"
False or "something"    # returns "something"
""    or "something"    # returns "something"

Eğer kullandığınız değişkeni s tutmak bir şey ya da bir başvuru için örnek bir sınıf veya None (sürece sınıf tanımlamıyor üye __nonzero__() __len__()), güvenli kullanmak için aynı semantik olarak boş birleşiyor operatör.

Hatta bu Python-yan etkisi olması yararlı olabilir. Yanlış olan ne biliyor musun, çünkü bu özellikle None (bir hata nesnesi, örneğin) kullanmadan varsayılan değer tetiklemek için kullanabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • boogie2988

    boogie2988

    6 NİSAN 2006
  • The Onion

    The Onion

    14 Mart 2006