Python Language
Идиомы
Поиск…
Инициализация ключа словаря
Предпочитайте метод dict.get
если вы не уверены, присутствует ли ключ. Он позволяет вернуть значение по умолчанию, если ключ не найден. Традиционный метод dict[key]
приведет к KeyError
исключения KeyError
.
Вместо того, чтобы делать
def add_student():
try:
students['count'] += 1
except KeyError:
students['count'] = 1
Делать
def add_student():
students['count'] = students.get('count', 0) + 1
Переключение переменных
Чтобы переключить значение двух переменных, вы можете использовать распаковку кортежа.
x = True
y = False
x, y = y, x
x
# False
y
# True
Использовать тестирование ценности истины
Python будет неявно преобразовывать любой объект в логическое значение для тестирования, поэтому используйте его везде, где это возможно.
# 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
Это обычно дает более читаемый код и обычно намного безопаснее при работе с неожиданными типами.
Щелкните здесь, чтобы узнать, что будет оценено для False
.
Проверить «__main__», чтобы избежать непредвиденного выполнения кода
Хорошая практика - проверить переменную __name__
вызывающей программы перед выполнением кода.
import sys
def main():
# Your code starts here
# Don't forget to provide a return code
return 0
if __name__ == "__main__":
sys.exit(main())
Использование этого шаблона гарантирует, что ваш код будет выполнен только тогда, когда вы ожидаете его; например, при явном запуске файла:
python my_program.py
Преимущество, однако, возникает, если вы решите import
файл в другую программу (например, если вы пишете его как часть библиотеки). Затем вы можете import
свой файл, а ловушка __main__
гарантирует, что никакой код не будет выполнен неожиданно:
# 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()