为什么我不能在函数内使用vars()作为函数外的变量?

时间:2019-05-19 00:55:36

标签: python python-3.x function variables

我制作了一个名为void Common::setSeed() { static bool set = false; if (!set) { srand(time(NULL)); set = true; } } 的函数。在此函数之外,我创建了一个名为translate(x)的变量。我想使用korean函数调用我的korean。但是,没有成功编译,而是发生了错误。

vars()[]

我认为输出将为korean = 'ko-KR' lgf = 'korean' def translate(x): lgfn = vars()[x] return lgfn; translate(lgf) ,但是在编译之后,它返回一个'ko-KR'

2 个答案:

答案 0 :(得分:2)

如评论中所建议,此处无需vars()。一个简单的字典就足够了

def translate(key):
    #Return value for a given key
    dct = {'korean': 'ko-KR'}
    return dct[key]

print(translate('korean'))

输出将为

ko-KR

答案 1 :(得分:0)

您应该改用$OutputlistView.SelectedItems | Foreach-Object{ $_.SubItems[0].Text + " , " + $_.SubItems[1].Text + " , " + $_.SubItems[2].Text } | clip

globals

输出korean = 'ko-KR' lgf = 'korean' def translate(x): lgfn = globals()[x] return lgfn; print(translate(lgf))

有几种获取环境变量的方法:

  • globals()提供了一个全局变量字典
  • locals()给出一个 局部变量字典
在您的情况下,

var()可以作为locals()使用,它将为您提供函数范围内的变量。而全局变量拥有所有全局函数