Выбрать главу

Соглашения

Соглашения важны для всех, но это не единственный способ решения задачи. Соглашения, приведенные в этом разделе, довольно распространены, и мы рекомендуем придерживаться их, чтобы сделать свой код более читаемым.

Альтернативы при проверке на равенство

Если вам не нужно явно сравнивать свое значение со значением True, None или 0, вы можете добавить его к оператору if, как в следующих примерах (см. статью «Проверка значения на правдивость» (http://docs.python.org/library/stdtypes.html#truth-value-testing) — там представлен список значений, которые расцениваются как False).

Плохой код Хороший код
if attr == True: # Просто проверяем значение
····print 'True!' if attr:
  ····print 'attr is truthy!'
  # или проверяем на противоположное значение
  if not attr:
  ····print 'attr is falsey!'
  # если вам нужно только значение 'True'
  if attr is True:
  ····print 'attr is True'
if attr == None: # или явно проверяем на значение None
····print 'attr is None!' if attr is None:
  ····print 'attr is None!'
Получаем доступ к элементам массива

Используйте синтаксис x in d вместо метода dict.has_key или передавайте аргумент по умолчанию в метод dict.get().

Плохой код Хороший код
>>> d = {'hello': 'world'} >>> d = {'hello': 'world'}
>>> >>>
>>> if d.has_key('hello'): >>> print d.get('hello', 'default_value')
… ····print(d['hello']) world
# prints 'world' >>> print d.get('howdy', 'default_value')
… else: default_value
… ····print('default_value') >>>
>>> # или:
world … if 'hello' in d:
  … ····print(d['hello'])
 
  world
Манипуляции со списками

Списковые включения — мощный способ работы со списками (для получения более подробной информации обратитесь к соответствующей статье в руководстве The Python Tutorial по адресу http://docs.python.org/tutorial/datastructures.html#list-comprehensions). Функции map() и filter() могут выполнять операции со списками с помощью другого, более выразительного синтаксиса.

Стандартный цикл Списковое включение
# Отфильтруем все элементы, # Списковое включение выглядит
# чье значение превышает 4 # прозрачнее
a = [3, 4, 5] a = [3, 4, 5]
b = [] b = [i for i in a if i > 4]
for i in a: # Или:
····if i > 4: b = filter(lambda x: x > 4, a)
········b.append(i)  
# Добавим 3 к каждому элементу списка # Здесь также прозрачнее
a = [3, 4, 5] a = [3, 4, 5]
for i in range(len(a)): a = [i + 3 for i in a]
····a[i] += 3 # Или:
  a = map(lambda i: i + 3, a)