![]() |
Re: [Q] How to exec code object with local variables specified?
Makoto Kuwata wrote:
> Is it possible to run code object with local variables specified? > I'm trying the following code but not work: > > def fn(): > x = 1 > y = 2 > localvars = {'x': 0} > exec(fn.func_code, globals(), localvars) > print(localvars) > ## what I expected is: {'x': 1, 'y': 2} > ## but actual is: {'x': 0} > > Python: 2.7.3 >>> loc = {} >>> exec("x = 1; y = 2", globals(), loc) >>> loc {'y': 2, 'x': 1} However, this won't work with the code object taken from a function which uses a different a bytecode (STORE_FAST instead of STORE_NAME): >>> import dis >>> def f(): x = 1 .... >>> dis.dis(f) 1 0 LOAD_CONST 1 (1) 3 STORE_FAST 0 (x) 6 LOAD_CONST 0 (None) 9 RETURN_VALUE >>> dis.dis(compile("x=1", "<nofile>", "exec")) 1 0 LOAD_CONST 0 (1) 3 STORE_NAME 0 (x) 6 LOAD_CONST 1 (None) 9 RETURN_VALUE |
| All times are GMT. The time now is 05:33 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.