Najlepsze praktyki dotyczące instrukcji warunkowych w Pythonie

Najlepsze praktyki dotyczące instrukcji warunkowych w Pythonie

Ten artykuł wyjaśnia najlepsze praktyki dotyczące instrukcji warunkowych w Pythonie.

YouTube Video

Najlepsze praktyki dotyczące instrukcji warunkowych w Pythonie

Instrukcja if w Pythonie jest podstawową konstrukcją do implementacji rozgałęzień warunkowych i ma ogromny wpływ na czytelność oraz łatwość utrzymania kodu. Tutaj omówimy szczegółowo najlepsze praktyki korzystania z instrukcji if.

Używaj wyraźnych wyrażeń warunkowych

Pisz wyrażenia warunkowe zwięźle i jasno, unikając zbędnych instrukcji.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • W Pythonie możesz wskazać, że warunek jest spełniony, pisząc if condition:.

Łączenie wielu warunków

Podczas łączenia wielu warunków używaj and lub or. Jednak gdy wyrażenia warunkowe stają się skomplikowane, czytelność może się zmniejszyć, dlatego rozważ następujące poprawki:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • Dzieląc warunki i przypisując je do zmiennych, można poprawić czytelność.

Ocena krótkiego spięcia (and/or)

W wyrażeniach warunkowych z użyciem and lub or, jeśli wynik można ustalić tylko na podstawie wartości po lewej stronie, następuje ocena krótkiego spięcia i prawa strona nie jest oceniana. Zrozumienie tego pomaga unikać niepotrzebnego przetwarzania i zapobiegać błędom.

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • Wykorzystując ocenę krótkiego spięcia, możesz zwiększyć wydajność i bezpieczeństwo przetwarzania.

Priorytet operatorów and i or

and ma wyższy priorytet niż or. Dlatego podczas łączenia warunków bez nawiasów możesz uzyskać niezamierzone wyniki. Ważne jest używanie nawiasów, aby jasno określić swoje zamiary.

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • Stosując nawiasy, możesz jasno określić priorytet and i or, zmniejszając ryzyko nieoczekiwanych błędów.

Zrozum wartości Truthy i Falsy

W Pythonie następujące wartości są oceniane jako False:.

  • Brak
  • Fałsz
  • Liczba 0 (w tym 0.0)
  • Puste typy sekwencji (takie jak puste listy, krotki czy ciągi znaków)
    • Przykłady: [], (), ""
  • Pusty słownik
    • Przykład: {}

Wykorzystanie tego może pomóc w uproszczeniu wyrażeń warunkowych.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

Poprawne użycie elif i else

Podczas oceny wielu warunków używaj elif. Używaj else, aby zdefiniować domyślne zachowanie na końcu.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • else nie jest obowiązkowe. Jeśli wszystkie warunki są spełnione, można je pominąć.
  • Zwróć uwagę na kolejność wyrażeń warunkowych i ułóż je logicznie, unikając zbędnej redundancji.

Ogranicz głębokość zagnieżdżania.

Głębokie zagnieżdżanie instrukcji if utrudnia czytanie kodu.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • Stosowanie wczesnych zwrotów może zmniejszyć zagnieżdżanie i uczynić kod bardziej zwięzłym.

Unikaj używania jednowierszowych instrukcji if.

Można zapisywać instrukcje if w jednej linii, jednak może to obniżyć czytelność.

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • Stosowanie jednoliniowych instrukcji if jest dopuszczalne tylko dla krótkich warunków lub działań, ale należy unikać nadmiernie rozbudowanego kodu.

Upraszczanie za pomocą operatora trójargumentowego lub or

Dla prostych warunkowych rozgałęzień użycie operatora trójargumentowego lub or może uczynić kod bardziej zwięzłym. Jednak nadmierne używanie tych rozwiązań może utrudnić czytelność kodu, dlatego powinny być stosowane tylko dla prostych i intuicyjnych warunków.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • Przy prostych warunkach zastosowanie operatora trójargumentowego lub or może skrócić i ułatwić zrozumienie kodu.

Buforowanie wyrażeń warunkowych.

Wyrażenia warunkowe zawierające kosztowne obliczenia lub wywołania funkcji można buforować w zmiennych, aby poprawić wydajność.

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

Podsumowanie

Instrukcje if w Pythonie to proste i skuteczne narzędzia, ale niewłaściwe użycie może sprawić, że kod stanie się skomplikowany i trudny do zrozumienia. Przyjmując najlepsze praktyki przedstawione tutaj, możesz poprawić czytelność, łatwość konserwacji i wydajność swojego kodu.

Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.

YouTube Video