Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Автостопом по Python - Unknown на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

return None # Лучше сгенерировать исключение

# Сложный код, предназначенный для выбора best_ad

# Из доступных вариантов на основе индивидуальных предпочтений...

# Постарайтесь устоять перед искушением вернуть best_ad в случае успеха...

if not best_ad:

# Запасной план определения best_ad

return best_ad # Единая точка выхода, которая поможет обслуживать код

Соглашения

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

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

Если вам не нужно явно сравнивать свое значение со значением 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:

print 'attr is None!'

# или явно проверяем на значение None

if attr is None:

print 'attr is None!' Получаем доступ к элементам массива

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

Плохой код

Хороший код

>>> d = {'hello': 'world'}

>>>

>>> if d.has_key('hello'):

... print(d['hello'])

# prints 'world'

... else:

... print('default_value')

...

world

>>> d = {'hello': 'world'}

>>>

>>> print d.get('hello', 'default_value')

world

>>> print d.get('howdy', 'default_value')

default_value

>>>

>>> # или:

... 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]

b = []

for i in a:

if i > 4:

b.append(i)

# Списковое включение выглядит

# прозрачнее

a = [3, 4, 5]

b = [i for i in a if i > 4]

# Или:

b = filter(lambda x: x > 4, a)

# Добавим 3 к каждому элементу списка

a = [3, 4, 5]

for i in range(len(a)):

a[i] += 3

# Здесь также прозрачнее

a = [3, 4, 5]

a = [i + 3 for i in a]

# Или:

a = map(lambda i: i + 3, a)

Используйте функцию enumerate(), чтобы определить свою позицию в списке. Этот вариант выглядит более читаемым, чем создание счетчика, и лучше оптимизирован для итераторов: >>> a = ["icky", "icky", "icky", "p-tang"]

>>> for i, item in enumerate(a):

... print("{i}: {item}".format(i=i, item=item))

...

0: icky

1: icky

2: icky

3: p-tang

Продолжение длинной строки кода

Когда логическая строка кода длиннее принятого значения38, нужно разбить строку на несколько физических строк. Интерпретатор Python объединит следующие друг за другом строки, если последний символ строки — обратный слэш. В некоторых случаях это может оказаться полезным, но такого подхода следует избегать, потому что знак пробела, добавленный в конце строки, разрушит код и может привести к неожиданным последствиям.

Лучшее решение — заключить элементы в круглые скобки. Если интерпретатор Python встретит незакрытую круглую скобку в одной строке, он будет присоединять к ней следующие строки до тех пор, пока скобка не будет закрыта. То же поведение верно для фигурных и квадратных скобок.

Плохой код

Хороший код

french_insult = \

"Your mother was a hamster, and \

your father smelt of elderberries!"

french_insult = (

"Your mother was a hamster, and "

"your father smelt of elderberries!"



Поделиться книгой:

На главную
Назад