2012-07-06 16 views

cevap

143

: izin daha af dilemesini

kolay. Bu ortak Python kodlama stili, geçerli anahtarların veya özniteliklerin varlığını varsayar ve varsayımın yanlış olduğunu kanıtlarsa istisnaları yakalar. Bu temiz ve hızlı stil, birçok try ve except ifadelerinin varlığıyla karakterizedir. teknik bir örnek bir sözlük anahtarını erişmek için bir girişim olacağını böyle C.

gibi birçok diğer dillere ortak LBYL style ile tezat oluşturmaktadır.

EAFP:

try: 
    x = my_dict["key"] 
except KeyError: 
    # handle missing key 

LBYL:

if "key" in my_dict: 
    x = my_dict["key"] 
else: 
    # handle missing key 

LBYL versiyonu iki kez sözlüğe içindeki anahtarı aramak zorundadır ve ayrıca biraz daha az okunabilir düşünülebilir.

+4

güzel örneklerle kısa. –

+14

Bir gelişme, bir başka avantajın, yarış koşullarından kaçınmasıdır. Örneğin, sadece bir dosyayı açmayı deneyin ve eğer alırsanız, aldınız. Görmek yerine * eğer alabilirseniz *, daha sonra onu almaya çalışın ve kontrol ile erişim arasındaki zamanın küçük bir zaman diliminde, bunu daha uzun sürebileceğinizi anlayın. –

+18

Python, anahtarın mevcut olmaması durumunda işleyici yalnızca x değerine varsayılan bir değer atarsa, her ikisinden de kaçınmanın bir yolunu sağlar: 'x = mydict.get ('anahtar')' geri döner '' anahtar ''my_dict' içinde değilse; .get ('anahtar', ) 'da yapabilir ve sonra anahtarın sözlükte olmaması durumunda x'e bir şey atanır. dict.setdefault() 've' collections.defaultdict', fazla koddan kaçınmak için güzel şeylerdir. – JAB

İlgili konular