- Регистрация
- 19 Май 2018
- Сообщения
- 60
- Лучшие ответы
- 0
- Репутация
- 30
Привет, начал я пытаться писать своего бота для ВК, при этом изучая как и сам Python, так и API к ВК.
В моем боте надо было сделать какой-нибудь удобный вариант с вызовом функции по командам, например - "Курс биткоина" и вызывается функция. По началу я думал использовать функцию eval() для вызова функции по ее имени, но вот только минус в том что все команды должны будут "иметь_такой_формат", что конечно же не удобно. Можно закостылить, например
Как вариант использования:
Но неужели нет варианта попроще? Есть конечно - словари!
В этом варианте я нашел несколько плюсов:
Ну существование первого варианта никто не отменяет, он тоже может быть полезен. Итак, вы знаете еще интересные варианты вызова функции из строки?
В моем боте надо было сделать какой-нибудь удобный вариант с вызовом функции по командам, например - "Курс биткоина" и вызывается функция. По началу я думал использовать функцию eval() для вызова функции по ее имени, но вот только минус в том что все команды должны будут "иметь_такой_формат", что конечно же не удобно. Можно закостылить, например
PHP:
'_'.join('is this what'.split())
PHP:
def скажи_привет():
print('Да что-то не охото')
eval('_'.join('скажи привет'.split()))()
PHP:
def say_hi():
print('Да что-то не охото')
functions = {
'скажи привет': say_hi
}
functions['скажи привет']()
- Можно использовать в 'псевдониме' (назовем это так) и различные символы
PHP:functions = { 'скажи привет!': say_hi }
- Функция вызывается по адресу, а не по имени, как у eval(). Поэтому конфуза с тем, что функция может быть не найдена отсутствует.
Ну существование первого варианта никто не отменяет, он тоже может быть полезен. Итак, вы знаете еще интересные варианты вызова функции из строки?