Другие возможности 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
Ответьте, пожалуйста, на опрос обратной связи по курсу. Результаты опроса помогают нам улучшать курс.
Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.