Является ли определение внутренней функции внутри рекурсивной функции плохой идеей?

У меня есть рекурсивный код возврата, который проверяет правильность выбора перед тем, как сделать его. Это плохая идея, чтобы вкладывать функцию is_legal_choice внутри рекурсивного solve функция? Будет ли эта внутренняя функция переопределяться каждый раз, когда вызывается функция solve?

7 голосов | спросил rookie 17 PMpThu, 17 Apr 2014 20:37:55 +040037Thursday 2014, 20:37:55

2 ответа


0

Да, внутренняя функция будет переопределяться при каждом вызове функции. Тем не менее, это не так плохо, как вы могли предположить; код Python анализируется в объекте кода один раз, и только объект функции (который служит своего рода оберткой для объекта кода) каждый раз строится заново.

ответил kindall 17 PMpThu, 17 Apr 2014 20:41:37 +040041Thursday 2014, 20:41:37
0

Да, он будет переопределяться при каждом вызове. Однако это не всегда плохая идея. Вот как вы бы сделали замыкание, что иногда полезно.

Если вашей функции is_legal_choice необходимо использовать некоторые данные, которые доступны только в рамках внешней функции, я бы сказал, пойти на это , Снижение производительности не будет слишком большим (вы всегда можете профилировать, если вам нужно).

Если is_legal_choice не нужны данные из solve, делайте все, что делает ваш код наиболее понятным.

Вы можете найти больше информации о замыканиях в Google, но вот пример: http://ynniv.com/blog/2007/08/closures-in-python.html

ответил bgschiller 17 PMpThu, 17 Apr 2014 20:43:34 +040043Thursday 2014, 20:43:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132