def create_funcs(): funcs = [] for i in range(3): def f(): return i funcs.append(f) return funcs
for func in create_funcs(): print(func())
Варианты ответа: A)
1 2
B)
2 2
C)
0 0
D) Ошибка выполнения
---
✅ Правильный ответ: B
Почему: Это классическая late binding: функция f() не сохраняет значение i на момент создания, а берёт его из текущей области видимости при вызове. К моменту вызова i == 2 (последнее значение в range(3)), поэтому все три функции возвращают 2.
Чтобы избежать этого — можно использовать аргументы по умолчанию: def f(i=i): return i
def create_funcs(): funcs = [] for i in range(3): def f(): return i funcs.append(f) return funcs
for func in create_funcs(): print(func())
Варианты ответа: A)
1 2
B)
2 2
C)
0 0
D) Ошибка выполнения
---
✅ Правильный ответ: B
Почему: Это классическая late binding: функция f() не сохраняет значение i на момент создания, а берёт его из текущей области видимости при вызове. К моменту вызова i == 2 (последнее значение в range(3)), поэтому все три функции возвращают 2.
Чтобы избежать этого — можно использовать аргументы по умолчанию: def f(i=i): return i
BY Python RU
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Telegram has made it easier for its users to communicate, as it has introduced a feature that allows more than 200,000 users in a group chat. However, if the users in a group chat move past 200,000, it changes into "Broadcast Group", but the feature comes with a restriction. Groups with close to 200k members can be converted to a Broadcast Group that allows unlimited members. Only admins can post in Broadcast Groups, but everyone can read along and participate in group Voice Chats," Telegram added.