Хотя существует много дискуссий по поводу создания и использования вложенных функций, очень мало информации о , когда их использовать. Я пытаюсь выяснить следующее: когда идиоматически c использовать вложенную функцию? Когда следует использовать lambda x: <function>
над вложенной функцией?
Python - это язык, который позволяет делать много вещей, которые не должны (ie: использовать глобальные переменные). Это функция, которую вы можете использовать, но не должны?
Сценарий, который я предполагал использовать, находится в модульном тестировании. Допустим, у вас есть метод, определенный следующим образом:
def FunctionOne(varone: int, vartwo: object) -> None:
assert varone == vartwo()
vartwo - это функция, которая передается в функцию. Теперь мы хотим протестировать это. Итак, мы пишем (частичный) модульный тест, который выглядит следующим образом:
def unittest() -> None:
def test_function() -> int:
return 1
FuncitonOne(1, test_function)
Здесь есть следующие особенности:
- Функция нужна только в рамках функции модульного теста. .
- Функция никогда не вызывается где-либо еще.
Таким образом, резюмируя: когда (если вообще) использовать вложенную функцию с Python?