Есть ли способ передать список в качестве аргумента функции в eval () Или мне нужно преобразовать его в строку, а затем проанализировать как список в функции?
Мой простой пример выглядит так:
eval("func1(\'" + fArgs + "\')")
Я просто не уверен, есть ли лучший способ использовать fArgs как список вместо строки
Примечание:
Список предоставляется из ответа JSON
РЕДАКТИРОВАТЬ: Хорошо, вот немного больше моего класса, так что есть лучшее понимание того, как я использую eval
def test(arg):
print arg
#Add all allowed functions to this list to be mapped to a dictionary
safe_list = ['test']
safe_dict = dict([ (k, locals().get(k, None)) for k in safe_list ])
class Validate:
def __init__(self, Value, fName, fArgs):
eval(fName + "(\'" + fArgs + "\')", {"__builtins__":None},safe_dict)
Я могу ошибаться, думая об этом, но, насколько я понимаю, это безопасное использование eval, потому что единственные функции, которые можно вызывать, это те, которые перечислены в словаре safe_list. Функция, которую нужно запустить, и аргументы этой функции извлекаются из объекта JSON. Аргументы должны быть структурированы в виде списка. Будет ли объединение списка вместе с "," интерпретироваться как фактические аргументы или только как один аргумент?