Python Language
idiom
Sök…
Initialiseringar av ordbok
Föredrar dict.get
metoden om du inte är säker på om nyckeln finns. Det låter dig returnera ett standardvärde om nyckeln inte hittas. Den traditionella metoden dict[key]
skulle höja ett undantag från KeyError
.
Snarare än att göra
def add_student():
try:
students['count'] += 1
except KeyError:
students['count'] = 1
Do
def add_student():
students['count'] = students.get('count', 0) + 1
Växla variabler
För att ändra värdet på två variabler kan du använda uppsamling av tupel.
x = True
y = False
x, y = y, x
x
# False
y
# True
Använd sanningsvärdetestning
Python kommer implicit att konvertera alla objekt till ett booleskt värde för testning, så använd det där det är möjligt.
# 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
Detta ger generellt mer läsbar kod och är vanligtvis mycket säkrare när man hanterar oväntade typer.
Klicka här för en lista över vad som kommer att utvärderas till False
.
Testa för "__main__" för att undvika oväntat körning av kod
Det är god praxis att testa det anropande programmets __name__
variabel innan du kör din kod.
import sys
def main():
# Your code starts here
# Don't forget to provide a return code
return 0
if __name__ == "__main__":
sys.exit(main())
Att använda detta mönster säkerställer att din kod endast körs när du förväntar dig att den ska vara; till exempel när du kör din fil uttryckligen:
python my_program.py
Fördelen kommer dock om du bestämmer dig för att import
din fil i ett annat program (till exempel om du skriver den som en del av ett bibliotek). Du kan sedan import
din fil och __main__
fällan säkerställer att ingen kod körs oväntat:
# 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()