строка python для кода функции arg? - PullRequest
0 голосов
/ 21 июня 2011

У меня есть функция с именем "myfunction".У меня есть строка «a», мне нужно передать ее в «myfunction», чтобы она давала тот же результат, как если бы моя строка была именем объекта python, myfunction(a) Так что у меня есть

def myfunction(var):
    print var
a = 1
mystring = "a"

Iнужно передать "mystring" в "myfuntion", чтобы он вел себя как переменная "a", переданная ему.Я думал о чем-то вроде этого, но это не сработает:

myfunction(exec(mystring))

PS.Да, я знаю о последствиях exec (), пожалуйста, объяснять это не нужно.

Ответы [ 2 ]

4 голосов
/ 21 июня 2011

Это будет eval(), а не exec:

myfunction(eval(mystring))

В качестве альтернативы:

myfunction(locals()[mystring])

Скорее всего, у вас есть фундаментальная проблема проектирования, если вы считаете, что вам нужно что-то вродеэто.

1 голос
/ 21 июня 2011

Нет необходимости в exec или eval:

>>> def myfunc(var):
...     print globals()[var] * 2
...
>>> a = 12
>>> myfunc('a')
24
...