Bästa metoder i Python
Den här artikeln förklarar bästa metoder i Python.
Vi förklarar bästa metoder i Python med faktiska kodexempel och presenterar sätt att skriva läsbar och underhållbar kod.
YouTube Video
Bästa metoder i Python
Gör läsbarhet till högsta prioritet
Först ska vi titta på att 'göra läsbarhet till högsta prioritet'.
Python är ett språk som värdesätter 'läsbarhet'. Prioritera att skriva kod vars syfte är tydligt vid första anblicken.
1# Bad example: unclear variable names
2a = 10
3b = 5
4c = a * bI den här koden förmedlar variabelnamnen inte sin betydelse, så det tar tid för andra att förstå den senare.
1# Good example: descriptive variable names
2price = 10
3quantity = 5
4total_cost = price * quantityGenom att ge variabler tydliga namn fungerar din kod som dokumentation.
Skriv tydlig (explicit) kod
Låt oss nu titta på att 'skriva tydlig (explicit) kod'.
I Python föredras 'tydliga avsikter' framför 'implicit beteende'.
1# Bad example: implicit truthy check
2if data:
3 process(data)I den här koden är det oklart vad som förväntas av data, vilket skapar god grogrund för buggar.
1# Good example: explicit condition
2if len(data) > 0:
3 process(data)Genom att göra villkor tydliga motsvarar kodens avsikt dess specifikation.
Håll funktioner små och fokuserade på ett enda ansvar
Låt oss nu titta på att 'hålla funktioner små och fokuserade på ett enda ansvar'.
När en funktion gör för mycket blir testning och underhåll svårt.
1# Bad example: doing too many things
2def handle_user(user):
3 save_to_database(user)
4 send_email(user)
5 write_log(user)I den här koden blir processerna tätt sammankopplade, vilket gör återanvändning och ändringar svåra.
1# Good example: single responsibility
2def save_user(user):
3 save_to_database(user)
4
5def notify_user(user):
6 send_email(user)
7
8def log_user(user):
9 write_log(user)Genom att dela upp funktionerna blir deras roller tydliga och testning enklare.
Använd typanvisningar aktivt
Låt oss nu titta på att 'använda typanvisningar aktivt'.
Typanvisningar fungerar som dokumentation och är ett kraftfullt verktyg för att förebygga buggar.
1# Bad example: Without type hints
2def add(a, b):
3 return a + bI den här koden är argumentens och returvärdenas typ oklara, vilket ökar risken för felanvändning.
1# Good example: With type hints
2def add(a: int, b: int) -> int:
3 return a + bMed typanvisningar förbättras IDE-komplettering, statisk analys och läsbarhet avsevärt.
Visa tydligt möjligheten att returnera None
Låt oss nu titta på att 'tydligt visa möjligheten att returnera None.'.
Funktioner som kan returnera None förbises ofta av de som använder dem.
1# Bad example: Ambiguous return value
2def find_user(user_id):
3 if user_id == 1:
4 return {"id": 1, "name": "Alice"}
5 return NoneI den här koden är det oklart om det överhuvudtaget blir ett returvärde.
1# Good example: explicit return type
2from typing import Optional, Dict, Any
3
4def find_user(user_id: int) -> Optional[Dict[str, Any]]:
5 if user_id == 1:
6 return {"id": 1, "name": "Alice"}
7 return NoneGenom att använda Optional kan du visa möjligheten att returnera None som en typ.
Fånga inte undantag för generellt
Låt oss nu titta på att 'inte fånga undantag för brett.'.
Undantagshantering bör i princip bara fånga det som är nödvändigt.
1# Bad example: catching all exceptions
2try:
3 result = int(value)
4except Exception:
5 result = 0Den här koden kan dölja fel som borde ha upptäckts.
1# Good example: catch specific exception
2try:
3 result = int(value)
4except ValueError:
5 result = 0Genom att begränsa vilka undantag som fångas missar du inte oväntade problem.
Hantera resurser säkert med with-satsen
Låt oss nu titta på 'att hantera resurser säkert med with-satsen.'.
Resurser som filer och lås måste alltid frigöras på ett säkert sätt.
1# Bad example: manual close
2file = open("data.txt")
3content = file.read()
4file.close()I den här koden kanske close() inte anropas om ett undantag uppstår.
1# Good example: using context manager
2with open("data.txt") as file:
3 content = file.read()Genom att använda en with-sats sker städningen säkert även om ett undantag uppstår.
Använd listförståelser (list comprehensions) på rätt sätt
Låt oss nu titta på 'att använda listförståelser på rätt sätt.'.
Enkla transformationsprocesser kan skrivas kortfattat med listförståelser.
1# Bad example: Verbose loop
2squares = []
3for i in range(10):
4 squares.append(i * i)I den här koden är det svårt att urskilja den centrala processen.
1# Good example: Clear list comprehension
2squares = [i * i for i in range(10)]Genom att använda listförståelser på rätt sätt förbättras kodens läsbarhet.
Undvik magiska nummer
Låt oss nu titta på 'att undvika magiska nummer.'.
Att skriva ut siffror och strängar direkt gör deras betydelse oklar.
1# Bad example: magic number
2if status == 404:
3 handle_not_found()I den här koden antas det att du vet vad 404 betyder.
1# Good example: named constant
2NOT_FOUND = 404
3
4if status == NOT_FOUND:
5 handle_not_found()Att ge namn gör avsikterna tydliga.
Skriv kod som är underhållbar, inte bara kod som 'fungerar'
Till sist, låt oss titta på 'att skriva kod som är underhållbar, inte bara kod som fungerar.'.
Det viktiga är om ditt framtida jag eller någon annan kan läsa den.
1# Bad example: Hard to maintain
2def f(x):
3 return x * 1.08 + 100I den här koden går det inte att förstå specifikationen utifrån koden.
1# Good example: Easy to maintain
2TAX_RATE = 1.08
3BASE_FEE = 100
4
5def calculate_total(price: float) -> float:
6 return price * TAX_RATE + BASE_FEEGenom att spegla betydelsen i namnen blir koden själv specifikationen.
Sammanfattning
Bästa metoder i Python handlar i grunden om att skriva kod som är lätt att förstå, snarare än smart kod. Att bygga små vanor leder till kod med färre fel som kan användas under lång tid.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.