def test():
print 'test'
def test2():
print 'test2'
test = {'test':'blabla','test2':'blabla2'}
for key, val in test.items():
key() # Here i want to call the function with the key name, how can i do so?
ответ
Вы можете использовать сами объекты-функции как ключи, а не имена функций. Функции являются объектами первого класса в Python, поэтому их более чистое и элегантное использование напрямую, а не их имена.
test = {test:'blabla', test2:'blabla2'}
for key, val in test.items():
key()
У Иоанна есть хорошее решение. Вот еще один способ, с помощью eval()
:
def test():
print 'test'
def test2():
print 'test2'
mydict = {'test':'blabla','test2':'blabla2'}
for key, val in mydict.items():
eval(key+'()')
Обратите внимание, что я изменил название словаря, чтобы предотвратить столкновение с именем функции test()
.
Oof, не уверен, почему вы когда-либо использовали это метод «объекты функции как сами ключи». Во всяком случае, вы можете быть интроспективным, используя что-то вроде 'hasattr', но никогда не' eval' –
@ Daniel Я не сказал, что это было красиво! : D – chrisaycock
Это работает, но 'eval()' имеет много накладных расходов, чтобы использовать его для вызова функции. Есть и другие, более дорогие способы «Pythonic» ... – martineau
Если то, что вы хотите знать, «Как вызвать функцию, когда у вас есть это имя в строку», вот некоторые хорошие ответы - Calling a function of a module from a string with the function's name in Python
+1 для исследования того, ответил ли этот вопрос здесь (что-то должно было сделать ОП, ИМХО). – martineau
- 1. Вызов функции печати с переменной задержкой/Python
- 2. Вызов функции с переменной
- 3. Python Вызов циклической переменной из функции
- 4. Вызов переменной из другой функции Python
- 5. Вызов переменной из другой функции в python
- 6. Вызов функции с именем переменной?
- 7. вызов функции onclick с переменной
- 8. Вызов функции из заданной переменной?
- 9. Вызов переменной в python
- 10. вызов функции функции переменной Javascript
- 11. Вызов функции внутри переменной
- 12. Почему Python читает вызов моей функции как вызов переменной?
- 13. Вызов переменной извне функции
- 14. Вызов функции как переменной
- 15. Вызов функции в переменной?
- 16. Вызов функции Python с набором параметров из переменной
- 17. вызов определения с помощью переменной в Python
- 18. Вызов функции из переменной (PHP)
- 19. Вызов функции при изменении переменной
- 20. Вызов функции setTimeout из переменной
- 21. вызов переменной, объявленной внутри функции
- 22. Вызов функции для определения переменной
- 23. Вызов переменной переменной как функции в jQuery
- 24. Вызов функции внутри переменной (произвольно)
- 25. Вызов функции jQuery с использованием имени переменной
- 26. Вызов переменной функции с неизвестным количеством параметров
- 27. HTML - Вызов функции Javascript с переменной?
- 28. Вызов функции с локальной статической переменной
- 29. Вызов функции javascript с использованием переменной php
- 30. Вызов функции как переменной в другой функции
Ой год .. я вижу ,, :), просто быстрый тестовый код;) – pkdkk
Возможный дубликат [Вызов функции модуля из строки с именем функции в Python] (http://stackoverflow.com/ Вопросы/3061/call-a-function-of-a-module-from-a-string-with-the-functions-name-in-python) – cfi