微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在exec内部使用非本地

如何解决在exec内部使用非本地

为什么要执行以下代码

num degreesToRads(num deg) {
  return (deg * pi) / 180.0;
}


canvas.drawArc(Offset(0,0) & Size(500,500),degreesToRads(90),2.09439666667,true,paint1);
canvas.drawArc(Offset(0,degreesToRads(210),degreesToRads(330),paint1);

给出此错误

exec("""
a = 3
def b():
  nonlocal a
  a = a + 1
b() #error occurs even without this call
print(a)
"""
)

为了满足文本/代码比率,这是更多的文本。

解决方法

nonlocal语句在封闭的函数名称空间中查找您命名的变量(如果在任何此类名称空间中没有此类变量,则会引发错误)。如果没有封闭功能,则不需要nonlocal。如果您想在顶层使用变量,则可以改用global语句。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。