лямбды в асинцио - PullRequest
       14

лямбды в асинцио

0 голосов
/ 25 февраля 2019

Документация Python 3.7.2 по списку событий asyncio говорит в документации по функции call_later:

Необязательные позиционные аргументы будут переданы обратному вызову при его вызове.Если вы хотите, чтобы обратный вызов вызывался с аргументами ключевого слова, используйте functools.partial ().

Является ли использование functools.partial более подходящим, чем использование lambda для этого случая?

1 Ответ

0 голосов
/ 26 февраля 2019

Является ли использование functools.partial более подходящим, чем использование lambda в этом случае?

"Улучшенный" - слишком сильное слово.Возможно, было бы правильно сказать, что functools.partial является «одним очевидным выбором» для простой привязки аргументов.

Некоторые возможные преимущества functools.partial по сравнению с lambda , а не , подразумеваемымиПриведенное выше предложение:

  • Как @ 1018 * указал @ 1019 * @AlexHall, functools.partial избегает ошибки позднего связывания , которая часто возникает при создании лямбдыв цикле.

  • functools.partial может сделать намерение более понятным для некоторых читателей.(Это, очевидно, индивидуально, поскольку читатели с любым фоном FP ​​обычно предпочитают lambda.)

  • В CPython functools.partial может быть чуть-чуть быстрее, чем lambda потому что ему не нужно создавать фрейм стека Python и не нужно выполнять фактическое связывание;его оптимизированная реализация на C просто должна выполнить вызов объекта.Разница должна измеряться в каждом конкретном случае.

...