尝试运行以下代码时:
i = 0
def truc():
print (i)
if (False): i = 0
truc()
它会产生UnboundLocalError,但
i = 0
def truc():
print (i)
#if (False): i = 0
truc()
不
这是一种通缉行为吗?
有没有办法在不创建新变量的情况下修改变量的值?我可以使用一个元素的字典。它有效,但看起来很难看:
i = {0 : 0}
def truc():
print (i[0])
if (False): i[0] = 0
truc()
这不是更好的解决方案吗?
答案 0 :(得分:0)
只需添加
global i
在方法truc()
的开头声明i
是全局变量
def truc():
global i
if (False):
i = 0
查看此topic in Python's FAQ以获取更多信息
答案 1 :(得分:-1)
i = 0
def truc():
global i
print (i)
if (False): i = 0
truc()
要引用函数的外部作用域变量,i
应声明为全局。
答案 2 :(得分:-1)
您必须在功能中添加global i
。
i = 0
def truc():
global i
if (False):
i = 0
处理此问题的其他方法是:
让i
大写你可以在没有global
的情况下访问它,但是i
然后i
是不可更改的,这似乎在你的情况下是不合适的
以#include <stdio.h>
extern "C"
{
void fillArray(int* a, int len)
{
for (int i = 0; i<len; i++)
{
a[i] = i*i;
}
for (int j = 0; j < len; ++j)
{
printf("a[%d] = %d\n", j, a[j]);
}
}
}
为参数。这使得代码不那么混乱,以后更容易调试。