问题描述
为什么要执行以下代码:
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
语句。