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

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006