Является ли использование functools.partial
более подходящим, чем использование lambda
в этом случае?
"Улучшенный" - слишком сильное слово.Возможно, было бы правильно сказать, что functools.partial
является «одним очевидным выбором» для простой привязки аргументов.
Некоторые возможные преимущества functools.partial
по сравнению с lambda
, а не , подразумеваемымиПриведенное выше предложение:
Как @ 1018 * указал @ 1019 * @AlexHall, functools.partial
избегает ошибки позднего связывания , которая часто возникает при создании лямбдыв цикле.
functools.partial
может сделать намерение более понятным для некоторых читателей.(Это, очевидно, индивидуально, поскольку читатели с любым фоном FP обычно предпочитают lambda
.)
В CPython functools.partial
может быть чуть-чуть быстрее, чем lambda
потому что ему не нужно создавать фрейм стека Python и не нужно выполнять фактическое связывание;его оптимизированная реализация на C просто должна выполнить вызов объекта.Разница должна измеряться в каждом конкретном случае.