在函数内部调用时,dict理解中出现Python名称错误

2024-05-23 21:02:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下python2代码,它给出了一个NameError:

def myfunc():


   myvar=50
    print myvar
    print eval('myvar')
    a = 'myvar'
    print { a:eval(a) }
    print { a:a for a in ['myvar'] }
    print { a:eval(a) for a in ['myvar'] }

myfunc()

当我现在用python2执行这个python代码时,我得到以下输出:

50
50
{'myvar': 50}
{'myvar': 'myvar'}
Traceback (most recent call last):
  File "tester.py", line 13, in <module>
    myfunc()
  File "tester.py", line 11, in myfunc
    print { a:eval(a) for a in ['myvar'] }
  File "tester.py", line 11, in <dictcomp>
    print { a:eval(a) for a in ['myvar'] }
  File "<string>", line 1, in <module>
NameError: name 'myvar' is not defined

备注:这是在Mac上运行的。。。 当我在函数外运行代码段时,它会按预期工作。。。你知道吗


Tags: 代码inpyfordefevallinemyfunc
1条回答
网友
1楼 · 发布于 2024-05-23 21:02:38

你可以通过做。。。你知道吗

globs, locs = globals(), locals()
print { a:eval(a, globs, locs) for a in ['myvar'] }

这里可以找到一个解释:eval fails in list comprehension

相关问题 更多 >