Вопрос:
Я новичок в Python и создаю переводчика для моей малины Pi, который получит вход, затем выдает код Морзе со светодиодом. У меня есть функция, которая точно выводит код Морзе для выбранной мной буквы. Я пытаюсь назначить функцию параметрам переменной для более быстрого доступа, подобного этому. a=letter(dot, dash) но когда я пытаюсь сохранить его таким образом, он запускает функцию с этими параметрами, я также не могу назвать ее чем-то вроде a(). Там может быть простое решение, но я не могу понять это. Если вам нужна дополнительная информация, я могу передать ее вам. Спасибо за помощь.
Лучший ответ:
То, что вам нужно, называется currying, привязывая аргументы к функциям, возвращающим новые функции. Или частичное применение. Каково решение вашей проблемы:
from functools import partial a = partial(func, arg1, arg2) Ответ №1
Да, вы можете использовать partial для этого:
from functools import partial a = partial(letter, dot, dash)
Частичная конструкция создает новую функцию. Если эта функция вызывается, она вызовет letter с dot и dash. В случае, если вы звоните с параметрами, эти параметры добавляются в конце (безымянные параметры), а названные параметры обновляются. a
Ответ №2
Вы можете установить переменную в функцию, а затем использовать переменную в качестве имени функции. Вот пример:
def cube(number): return number ** 3 make_cube = cube # Take out those parentheses
Теперь переменную make_cube можно использовать как функцию:
print(make_cube(2)) # 8
Оба cube и make_cube указывают на тот же адрес памяти, который вы можете подтвердить с помощью id(make_cube) == id(cube).
В вашем случае это может быть:
a = letter a(dot, dash) Ответ №3
Вы также можете написать выражение функции как строку, а затем позвонить с помощью eval.
a = «letter(dot, dash)» eval(a)
(Не требует импорта модуля)