Python Language
Frazeologia
Szukaj…
Inicjalizacje kluczy słownikowych
dict.get
metodę dict.get
, jeśli nie masz pewności, czy klucz jest obecny. Pozwala zwrócić wartość domyślną, jeśli klucz nie zostanie znaleziony. Tradycyjna metoda dict[key]
spowodowałaby wyjątek KeyError
.
Zamiast robić
def add_student():
try:
students['count'] += 1
except KeyError:
students['count'] = 1
Robić
def add_student():
students['count'] = students.get('count', 0) + 1
Przełączanie zmiennych
Aby zmienić wartość dwóch zmiennych, możesz użyć rozpakowywania krotek.
x = True
y = False
x, y = y, x
x
# False
y
# True
Użyj testu wartości prawdy
Python niejawnie przekonwertuje dowolny obiekt na wartość logiczną do testowania, więc używaj go tam, gdzie to możliwe.
# Good examples, using implicit truth testing
if attr:
# do something
if not attr:
# do something
# Bad examples, using specific types
if attr == 1:
# do something
if attr == True:
# do something
if attr != '':
# do something
# If you are looking to specifically check for None, use 'is' or 'is not'
if attr is None:
# do something
Generuje to generalnie bardziej czytelny kod i jest zwykle znacznie bezpieczniejsze w przypadku nieoczekiwanych typów.
Kliknij tutaj, aby wyświetlić listę rzeczy, które zostaną ocenione jako False
.
Przetestuj dla „__main__”, aby uniknąć nieoczekiwanego wykonania kodu
Dobrą praktyką jest przetestowanie zmiennej __name__
programu wywołującego przed wykonaniem kodu.
import sys
def main():
# Your code starts here
# Don't forget to provide a return code
return 0
if __name__ == "__main__":
sys.exit(main())
Użycie tego wzorca gwarantuje, że kod zostanie wykonany tylko wtedy, gdy się tego spodziewasz; na przykład po jawnym uruchomieniu pliku:
python my_program.py
Korzyścią jest jednak, jeśli zdecydujesz się import
plik do innego programu (na przykład, jeśli piszesz go jako część biblioteki). Następnie możesz import
plik, a pułapka __main__
zapewni, że żaden kod nie zostanie wykonany nieoczekiwanie:
# A new program file
import my_program # main() is not run
# But you can run main() explicitly if you really want it to run:
my_program.main()