def f():
print("Before", locals()) # line 2
print(x); # line 3
x = 2 # line 4
print("After", locals()) # line 5
x = 1
f()
Run Code Online (Sandbox Code Playgroud)
我知道 Python 中范围界定的 LEGB 规则。
对于上面的代码,当我注释掉第 4 行时,一切都按预期正常执行:对于第 3 行,python 在本地范围内找不到变量x,因此在找到它的全局范围中搜索它并打印 1。
但是当我按原样执行整个代码而不加注释时,它会引发UnboundLocalError: local variable 'x' referenced before assignment.
我确实知道我可以使用非本地和全局,但我的问题是:
我尝试在类似问题建议中找到答案,但失败了。如果我的理解有错误,请指正。
string p="a";
cout<<p[4];
Run Code Online (Sandbox Code Playgroud)
这段代码没有给出任何错误。这是否意味着 C++ 中的字符串数据类型也不受数组限制?