【问题标题】:NameError: 'c' is not defined [duplicate]NameError:'c'未定义[重复]
【发布时间】:2017-08-22 18:24:58
【问题描述】:

我用python(3.6.2版)编写以下代码:

def test():
    temp = 'c=1'
    exec(temp)
    print(c)

test()

运行时出现以下错误:

NameError: name 'c' is not defined

但是当在代码下面运行时:

temp='a=1'
exec(temp)
print(a)

它打印 1。

我该如何解决这个问题?

【问题讨论】:

  • 你没有一个名为 c 的变量,你将如何打印它?, print(c) 引发错误。
  • 我无法在 python2.7 或 python3 中重现您的错误。它每次打印1
  • 我也无法重现...
  • 我已经在 Python 3.6.1 中复制了它。
  • Python 3 的 exec() 的文档非常清楚:"不应尝试修改默认的本地字典。如果您需要查看代码对函数 exec() 返回后的局部变量。”(全局变量是另一回事)

标签: python


【解决方案1】:

exec() 函数后面只能跟字符串或对象。你要求它做的不是其中之一。您应该尝试以另一种方式定义 c 或停止使用 exec()

【讨论】:

  • 嗯? OP传一个字符串,问题不在于,是exec没有修改locals
猜你喜欢
  • 2018-08-01
  • 2020-06-17
  • 2016-07-06
  • 2015-10-22
  • 2016-05-12
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
相关资源
最近更新 更多