Part 7

Другие возможности Python

В завершение этого курса здесь собраны разные полезные возможности Python.

Однострочные условные выражения

Следующие две инструкции дают абсолютно одинаковый результат:

if x%2 == 0:
    print("even")
else:
    print("odd")
print("even" if x%2 == 0 else "odd")

Во втором примере у нас есть условное выражение в одну строку: a if [condition] else b. Значение этого выражения будет равно a, если условие истинно, и b, если оно ложно. Такую конструкцию иногда называют тернарным оператором.

Условные выражения могут быть очень полезны, когда нужно присвоить что-то условно. Например, если у вас есть переменные x и y, и вы хотите либо увеличить, либо установить значение y в зависимости от четности x, можно написать обычную инструкцию if else вот так:

if x%2 == 0:
    y += 1
else:
    y = 0

То же самое можно сделать аккуратной однострочной записью:

y = y + 1 if x%2 == 0 else 0

"Пустой" блок

Возможно, вы помните из предыдущей части, что в программе Python нельзя оставлять пустой блок. Если вам нужен блок кода, который ничего не делает, например при тестировании какой-то другой функциональности, команда pass позволит это сделать. Например, можно написать функцию, которая ничего не делает:

def testing():
    pass

Эта функция просто сразу вернет управление. Если убрать команду pass, то есть оставить полностью пустой блок, возникнет ошибка.

def testing():  # this causes an error!

Циклы с блоками else

В Python у циклов тоже могут быть блоки else. Этот участок кода выполняется, если цикл завершается обычным образом.

Например, в следующем примере мы просматриваем список чисел. Если в списке есть четное число, программа выводит сообщение, а цикл прерывается. Если четных чисел нет, цикл завершается обычным образом, а затем выводится другое сообщение.

my_list = [3,5,2,8,1]
for x in my_list:
    if x%2 == 0:
        print("found an even number", x)
        break
else:
    print("there were no even numbers")

Более традиционный способ добиться того же — использовать вспомогательную переменную, чтобы запомнить, был ли найден нужный элемент:

my_list = [3,5,2,8,1]
found = False
for x in my_list:
    if x%2 == 0:
        print("found an even number", x)
        found = True
        break
if not found:
    print("there were no even numbers")

Использование инструкции for else избавляет нас от необходимости писать отдельную переменную.

Значение параметра по умолчанию

У функции Python может быть значение параметра по умолчанию. Оно используется всякий раз, когда функции не передают аргумент. Посмотрите на следующий пример:

def say_hello(name="Emily"):
    print("Hi there,", name)

say_hello()
say_hello("Eric")
say_hello("Matthew")
say_hello("")
Пример вывода

Hi there, Emily Hi there, Eric Hi there, Matthew Hi there,

Обратите внимание: пустая строка все равно является строкой, поэтому параметр по умолчанию не используется, если функции передана пустая строка.

Переменное количество параметров

Можно также определить функцию с переменным количеством параметров, добавив звездочку перед именем параметра. Все оставшиеся аргументы, переданные функции, помещаются в кортеж, и к ним можно обращаться через именованный параметр.

Следующая функция подсчитывает количество и сумму своих аргументов:

def testing(*my_args):
    print("You passed", len(my_args), "arguments")
    print("The sum of the arguments is", sum(my_args))

testing(1, 2, 3, 4, 5)
Пример вывода

You passed 5 arguments The sum of the arguments is 15

Loading

Ответьте, пожалуйста, на опрос обратной связи по курсу. Результаты опроса помогают нам улучшать курс.

Вы дошли до конца этого раздела!

Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.