相关疑难解决方法(0)

globals(),locals()和vars()之间有什么区别?

是什么区别globals(),locals()vars()?他们回报了什么?结果更新是否有用?

python

133
推荐指数
1
解决办法
5万
查看次数

动态设置局部变量

你如何在Python中动态设置局部变量?

(变量名称是动态的)

更新:我知道这不是一个好的做法,而且这些言论是合法的,但这不是一个坏问题,只是一个更理论的问题 - 我不明白为什么这证明了这一点.

python dynamic

97
推荐指数
3
解决办法
6万
查看次数

Python 2和Python 3中exec函数的行为

下面的代码给出了不同的输出Python2和在Python3:

from sys import version

print(version)

def execute(a, st):
    b = 42
    exec("b = {}\nprint('b:', b)".format(st))
    print(b)
a = 1.
execute(a, "1.E6*a")
Run Code Online (Sandbox Code Playgroud)

Python2 打印:

2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]
('b:', 1000000.0)
1000000.0
Run Code Online (Sandbox Code Playgroud)

Python3 打印:

3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)]
b: 1000000.0
42
Run Code Online (Sandbox Code Playgroud)

为什么Python2将函数b内部的变量绑定到execute函数字符串中的exec值,Python3而不执行此操作?我怎样才能实现Python2in 的行为Python3?我已经尝试将全局和本地的字典传递给exec函数Python3,但到目前为止还没有任何工作.

---编辑---

在阅读了Martijns的回答后,我进一步分析了这一点 …

python exec python-2.7 python-3.x

38
推荐指数
2
解决办法
3万
查看次数

Python eval在函数内部不起作用

为什么Python eval不能在函数内部工作?相同的eval(compile(cmd))代码在全局环境中工作,但在foo函数内部不起作用.

简单的例子:

fn = '/tmp/tmp'
mode = 'single'

def foo(cmd, fn, mode):
    eval(compile(cmd, fn, mode)) # <<< this does not work
    print 'foo: cmd=', cmd
    print 'foo: x=', x

cmd = "x = 1"
eval(compile(cmd, fn, mode)) # <<< this works
print 'global scope: cmd=', cmd
print 'global scope: x=', x

del(x)
foo('x = 9', fn, mode)
Run Code Online (Sandbox Code Playgroud)

这是输出和错误消息:

global scope: cmd= x = 1
global scope: x= 1
foo: cmd= x = 9
foo: …
Run Code Online (Sandbox Code Playgroud)

python eval function global-variables exec

7
推荐指数
1
解决办法
1090
查看次数