2012-07-06 7 views

Odpowiedz

143

Z glossary:

Łatwiej prosić o przebaczenie niż pozwolenie. Ten wspólny styl kodowania Python zakłada istnienie ważnych kluczy lub atrybutów i wyjątków odłowu, jeśli założenie okaże się fałszywe. Ten czysty i szybki styl charakteryzuje się obecnością wielu oświadczeń try i except. Technika kontrastuje z popularnym dla wielu innych języków, takim jak C.

Przykładem może być próba dostępu do klucza słownika.

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 

Wersja LBYL musi szukać klucza wewnątrz słowniku dwa razy, a może być również uznane za nieco mniej czytelny.

+4

Krótki z ładnymi przykładami. –

+14

Ulepszeniem byłoby to, że kolejną zaletą jest unikanie warunków wyścigu ... np. Po prostu spróbuj otworzyć plik, a jeśli go zdobędziesz, masz go. Zamiast widzieć *, jeśli możesz go zdobyć *, a potem próbujesz go zdobyć i uświadomić sobie, że w minimalnym czasie między sprawdzaniem i dostępem do niego, możesz go dostać. –

+18

Python zapewnia również sposób uniknięcia obu tych sytuacji, jeśli przewodnik po prostu przypisuje wartość domyślną do 'x', gdy klucz nie istnieje:' x = mydict.get ('klucz') 'zwróci' Brak 'jeśli' 'klucz'' nie znajduje się w' my_dict'; możesz również zrobić '.get ('key', )', a następnie x zostanie mu przypisane to coś, jeśli klucz nie znajduje się w słowniku. 'dict.setdefault()' i 'collections.defaultdict' to dobre rzeczy do unikania również nadmiernego kodu. – JAB