py等价于R中的get()(=使用字符串来检索符号的值)

python equivalent of get() in R (= use string to retrieve value of symbol)

在r中,get(s)函数检索名称存储在字符变量(矢量)s中的符号的值,例如

1
2
3
4
X <- 10
r <-"XVI"
s <- substr(r,1,1) ##"X"
get(s)             ## 10

取罗马数字r的第一个符号,并将其转换为等价的整数。

尽管花了一段时间浏览R-python字典,搜索"元编程"、"语言编程"、"符号"、"字符串"等各种组合,我还是没有想出任何办法。(我是一个经验丰富的R用户和一个新手python用户。)

(我知道上面的例子是a(非常!)解决问题的方法很差。我对这个问题的一般答案很感兴趣,而不是专门把罗马数字转换成整数……)


您可以使用locals

1
2
s = 1
locals()['s']

编辑:

实际上,R中的get更通用——get('as.list')会把as.list还给你。对于类成员,在python中,我们可以使用getattr(这里),对于像len这样的内置内容,getattr(__builtins__, 'len')工作。


使用eval函数,该函数将字符串计算为表达式。

1
2
3
X = 10
r ="XVI"
v = eval(r[0])

重要提示:eval()计算表达式中可以使用的任何代码,而不仅仅是变量。不要将其与用户输入直接结合使用,否则可能存在安全漏洞。