Ошибка применения при возврате функции из функции [дублировать]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка применения при возврате функции из функции [дублировать]

Сообщение Anonymous »

У меня есть проблемы с использованием генераторов функций в Python, то есть возврата функций из функции, где некоторые из входов определяются с помощью аргументов внешней функции, давая функцию с более низким артиком. Я использовал этот метод ранее в других случаях без проблем, но в этом случае я столкнулся с ошибкой и не смог понять причину. У меня есть следующая функция, которая создает функцию: < /p>

Код: Выделить всё

def func1(s: set, f: Callable) -> Callable:
def func2(x: int) -> dict:
while x:
s = s - {x}
x = f(x)
return s
return func2

f2 = func1({1,2,3,4}, lambda x: x-1)
Если я попробую f2 (3) , я получаю ошибку "локальная переменная 's' ссылается перед назначением" , связанной с оператором s = s - {x} . Я не понимаю, почему s не является частью области области, поскольку я предполагал, что он был фиксирован, когда func1 был вызван для создания F2 .
Я смог решить эту проблему, вместо этого используя этот метод: я объединяю все аргументы в одну функцию, скажем, Func3 и используйте функции.

Код: Выделить всё

from functools import partial
def func3(x: int, s: set, f: Callable) -> dict:
while x:
s = s - {x}
x = f(x)
return s

f2 = partial(func3, s={1,2,3,4}, f=lambda x: x-1)

Когда я вызову f2 (3) я получаю {4} , как и ожидалось. Тем не менее, я, по -видимому, что -то упускаю в том, как работает переменная область в первом случае. Любое понимание будет высоко оценено.

Подробнее здесь: https://stackoverflow.com/questions/708 ... m-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка при возврате app.use(foo): app.use() требует функции промежуточного программного обеспечения')
    Гость » » в форуме Javascript
    0 Ответы
    127 Просмотры
    Последнее сообщение Гость
  • Ошибка get_features_name_out при возврате имени функции.
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка сообщения mypy в общей функции при возврате
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Обнаружено повреждение стека C++ при возврате из функции
    Гость » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Гость
  • Как преобразовать полученный класс в базовый абстрактный общий класс при возврате из функции?
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»