在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语句。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...