Det räcker inte alltid att skriva arbetskod; du bör försöka skriva välstrukturerad kod som också är lätt att förstå. Ren kod gör det enkelt för dig – och andra – att underhålla din programvara.
Python har många funktioner och funktioner som kan hjälpa dig att skriva renare kod. Här är några av de bästa.
1. Automatisera resursstängning med Context Manager
Att manuellt stänga resurser kan vara obekvämt när din kod interagerar med många resurser. Du kanske glömmer att stänga en resurs. Detta gör att ditt program använder systemresurser ineffektivt vilket kan leda till en minnesförlust.
Denna kod öppnar en fil och stänger den sedan manuellt:
fil = öppen("test.txt", 'r')
file_contents = file.read()
file.close()
words = file_contents.split(' ')
word_count = len (ord)
print (ord_antal)
Du kan automatisera stängningen av filen med hjälp av en kontexthanterare. Kontexthanterare hanterar resurser åt dig, så du behöver inte komma ihåg att hantera dem manuellt. Använd
med uttalande för att skapa ett sammanhang för att hantera en resurs:med öppen("test.txt", 'r') som fil:
file_contents = file.read()
words = file_contents.split(' ')
word_count = len (ord)
print (ord_antal)
Koden i detta block körs inom ramen för filobjektet som öppen returnerar. Python stänger automatiskt den filen när koden lämnar det sammanhanget, även om ett undantag inträffar.
2. Att skriva renare villkorsuttalanden
Du kanske kommer på dig själv att skriva en massa onödig kod när du hanterar if-else uttalanden. Python har ternära operatorer som hjälper dig att skriva mer kompakta uttalanden. Kodblocket nedan visar en normal if-else-sats.
skick = Sann
om skick:
x = 1
annan:
x = 0
skriv ut (x)
Du kan skriva om den här koden med en ternär operator som låter dig skriva villkoret på en enda kodrad.
skick = Sann
x = 1om skick annan0
skriv ut (x)
Det är viktigt att notera att du bör använda ternära operatorer när du implementerar enkel logik. I mer komplex logik och kapslade villkorliga uttalanden kan den ternära operatorn bli svår att förstå.
3. Hålla reda på artiklar med funktionen Enumerate
När du itererar över en Python-lista kan du komma åt indexet för det aktuella objektet på två sätt. Ett sätt är att använda den traditionella för loop. Detta fungerar bra, men koden är inte så ren som den skulle kunna vara. Det kräver också att du initierar indexet manuellt.
bilar = ["Bugatti", 'Mercedes', "Toyota"]
index = 0
för bil i bilar:
print (index, bil)
index += 1
Det andra sättet är att använda Pythons inbyggda uppräkningsfunktion. Detta ger dig tillgång till indexet och motsvarande värde i listan under looping.
bilar = ["Bugatti", 'Mercedes', "Toyota"]
för index, bil i räkna upp (bilar):
print (index, bil)
Du behöver nu inte hålla reda på indexet manuellt.
4. Slingor över flera listor med zip-funktionen
Du kan också använda enumerate-funktionen för att gå över flera listor samtidigt. Hämta indexet för den första listan och använd det sedan för att komma åt motsvarande värden i andra listor.
engelska_namn = ['mat', 'vatten', 'bil']
spanska_namn = ["alimento", 'agua', 'bil']
för index, namn i räkna upp (engelska_namn):
spanska = spanska_namn [index]
skriva ut (f' {namn} på spanska är {spanska}')
Detta fungerar bra, men du måste skriva mycket onödig kod om antalet listor ökar. För att skriva renare kod kan du använda zip-funktionen och skicka namnen på din lista till den.
engelska_namn = ['mat', 'vatten', 'bil']
spanska_namn = ["alimento", 'agua', 'bil']
för engelska spanska i zip (engelska_namn, spanska_namn):
skriva ut(f' {engelsk} på spanska är {spanska}')
Du bör fortsätta använda uppräkningsfunktionen för att loop över en enda lista. Men om du går över flera listor tillsammans, överväg att använda zip-funktionen.
Vid inmatning av känslig information ska inmatningen inte vara synlig som vanlig text på skärmen. Det vanliga sättet att ta input i Python är att använda inmatningsfunktionen:
användarnamn = input('Användarnamn: ')
lösenord = input('Lösenord: ')
skriva ut('Loggar in...')
Inmatningsfunktionen gör dock lösenordet synligt som vanlig text på skärmen när du skriver. För att säkerställa att lösenordet inte visas på skärmen bör du istället använda getpass-funktionen:
från getpass importera getpass
användarnamn = input('Användarnamn: ')
lösenord = getpass('Lösenord:')
skriva ut('Loggar in...')
Getpass-modulen är en del av Pythons standardbibliotek, så du behöver inte installera den.
6. Göra stora siffror läsbara med hjälp av understreckade platshållare
När du har att göra med stora siffror i ditt program kan de vara mycket svåra att läsa på ett ögonkast. Att tilldela felaktiga siffror till variabler leder till ett felaktigt program och det kan vara mycket svårt att upptäcka detta fel.
num1 = 10000000000
num2 = 100000000
totalt = num1 + num2
print (totalt)
Du kan skriva om koden ovan med understreck för att separera grupper om tusentals, ett vanligt sätt att göra stora siffror mer läsbara.
num1 = 10_000_000_000
num2 = 100_000_000
totalt = num1 + num2
skriva ut(f'{total:,}')
F-strängen i utskriftsfunktionen separerar resultatet med hjälp av tusentalsavgränsaren.
7. Använda hjälpfunktionen för att lära dig mer om en modul
Hjälpfunktionen är väldigt viktig i Python. Den låter dig veta hur du använder en modul du har installerat. För att använda den, installera modulen, starta sedan Python-tolken i en terminal och peka på sökvägen du har installerat modulen. Importera modulen och skicka slutligen namnet på modulen till hjälpfunktionen.
För att ta reda på vilka metoder och attribut du kan använda, ersätt hjälpfunktionen med dir-funktionen.
Funktionen dir returnerar metoderna och attributen som modulen inte stöder hela dokumentationen. Detta är användbart när du vill ha en glimt av vad modulen gör.
Skriver renare Python-kod
Python är ett väldigt mångsidigt språk. Som med alla andra språk kommer du att bli bättre på att skriva renare Python-kod med tiden.
Python har många inbyggda moduler och funktioner. I vissa fall kan man skriva svårläst kod eftersom man saknar kunskap om att en viss funktion finns. För att vara säker på att du är mer informerad bör du läsa fler artiklar om hur du skriver bättre kod.