![](https://secure.gravatar.com/avatar/b84ac66f43d5540875933cab30a501c4.jpg?s=120&d=mm&r=g)
At 12:30 PM 9/26/2001 -0700, you wrote:
Hi, I appreciate all replies to my previous quesions. This time, I am trying to pass two parameter to eval function so it can evaluate and return the result base on the parameter i gave. For examples:
********func.py*************** def fun (): print v1+v2
**************pro.py*********** from func import * funname = "fun()" v1 = "Hello " v2 = "World" eval(funname) **************************** I know these code will not run. If i put fun in the same file as pro.py, it works. What i want is to let fun in func.py to have access to variable v1 and v2 which are declared in pro.py. How can i do this? Any guidance or suggestion is highly appreciated.
I guess the question that comes up is why? This seems a pretty convoluted construct. From the point of view of module func, v1 and v2 are undefined; they're only visible in the namespace of the main program. You can make this work by having func.py import v1 and v2 from pro (and moving the eval to protected code: if __name__ == '__main__'). Normally you can pass eval() the namespaces it's going to operate in, but since what eval here does is run a function in a different module, you change context when the function runs. If you truly want program-global symbols, it seems better to put them in a separate file and have everybody import that. But most folks seem to think if you find a need to do that the design of the program could use some rethinking....