TGViewer
Channel Public Channel
Python: задачки и вопросы

Python: задачки и вопросы

@quiz_python

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Subscribers
6.91K
Photos
1.4K
Videos
1
Links
126

Showing posts older than #3535 · Back to latest

Older Posts 20 shown
Post #3533 1.31K
#размяться
Post #3532 1.41K
Если выражение lambda и оператор def, определяемый внутри функции, вкладывается в цикл, а вложенная функция ссылается на переменную из объемлющей области видимости, которая изменяется этим циклом, то все функции, генерируемые внутри цикла, будут иметь одно и то же значение — значение ссылаемой переменной на последней итерации цикла.

Лямбда-функция, несмотря на цикл for, будет запоминать последнее значение i, то есть 5:
def makeActions():
acts = []

for i in range(5):
acts.append(lambda x: i ** x) # i в таких условиях всегда равен 4

return acts

Чтобы добиться задуманного, нужно передать текущее значение переменной из объемлющей области видимости посредством стандартного значения:

acts.append(lambda x, i=i: i ** x)
Post #3530 1.36K
#ловушка
Post #3529 1.47K
Обратите внимание на опережающую ссылку в коде:

f2(x)


Вполне нормально вызывать функцию, определенную после функции, где она вызывается, при условии, что второй оператор def выполняется перед фактическим вызовом первой функции. Код внутри def никогда не выполняется до тех пор, пока функция не будет действительно вызвана.
Post #3527 1.41K
#джуну
Post #3526 1.49K
Замыкание (closure) представляет функцию, которая запоминает свое лексическое окружение даже в том случае, когда она выполняется вне своей области видимости.

Технически замыкание включает три компонента:
— внешняя функция multiply(), которая определяет некоторую область видимости и в которой определены некоторые переменные и параметры - лексическое окружение
— переменные и параметры (лексическое окружение), которые определены во внешней функции.
— вложенная функция inner(), которая использует переменные и параметры внешней функции.

inner() запоминает окружение, в котором была создана, в частности, значение параметра n. Кроме того, сама принимает параметр и возвращает произведение параметров n и m.
Post #3524 1.42K
#джуну
Post #3520 1.67K
Немного про области видимости

Имена, определяемые внутри инструкции def, не вступают в конфликт с именами, находящимися за ее пределами, даже если и там и там присутствуют одинаковые имена. Имя X, которому присвоено значение за пределами данной инструкции, полностью отлично от имени X, которому присвоено значение внутри инструкции def.
Post #3518 1.51K
#джуну
Post #3512 1.61K
В Python ради гибкости вызовам функций можно передавать аргументы по имени с помощью синтаксиса имя=значение и распаковывать произвольно много аргументов для отправки посредством снабжения аргументов звездочками — *args (позиционные аргументы) и **kwargs ключевые аргументы — Keyword arguments.

Пример позиционных аргументов:
def print_numbers(*args):
for number in args:
print(number)

# Вызов функции с произвольным количеством аргументов
print_numbers(1, 2, 3, 4, 5)


Пример именованных аргументов:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

# Вызов функции с произвольным количеством ключевых аргументов
print_info(name="Alice", age=30, city="New York")
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →