Что произойдет при выполнении x = 1; def foo(): x = x + 1; return x; foo()?
A
RecursionErrorB
AttributeErrorC
UnboundLocalErrorD
RuntimeErrorПравильный ответ. Если внутри функции есть присваивание имени, Python считает его локальным; чтение до присваивания приводит к
UnboundLocalError.Разбор
Внутри foo() есть присваивание x = ..., поэтому x считается локальной переменной. Но выражение справа x + 1 пытается прочитать локальный x до того, как ему присвоено значение. Это приводит к UnboundLocalError. Чтобы изменить глобальную переменную, нужен global x, а чтобы избежать побочных эффектов — лучше возвращать новое значение и присваивать его снаружи.
Проверь себя · 1/3разбор после ответа
Дана функция
def f(a, b, c): return a * 100 + b * 10 + c. Что вернет вызов f(1, c=3, b=2)?Ещё вопросы по теме «Функции и аргументы»
- Есть функция `def add(x, y): return x + y`. Что вернет вызов `add(2, 3)`?
- Дана функция `def f(a, b, c): return a * 100 + b * 10 + c`. Что вернет вызов `f(1, c=3, b=2)`?
- Есть функция `def power(x, exp=2): return x ** exp`. Что вернет вызов `power(3)`?
- Дана функция `def total(*args): return sum(args)`. Что вернет вызов `total(1, 2, 3)`?
- Дан код: `x = 10; def inc(): return x + 1`. Что вернёт вызов `inc()`?
- Все вопросы по «Функции и аргументы» →