我试图搜索这个,但我不太明白。我遇到了这个错误,所以我形成了一个快速简单的例子。
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(8)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
if(SD.mkdir("vdfa/3143#2123/fasfd")){
Serial.println("Succesfully created directory");
}
if(SD.mkdir("!")){
Serial.println("Succesfully created directory1");
}
if(SD.mkdir("@")){
Serial.println("Succesfully created directory2");
}
if(SD.mkdir("#")){
Serial.println("Succesfully created directory3");
}
if(SD.mkdir("$")){
Serial.println("Succesfully created directory4");
}
if(SD.mkdir("%")){
Serial.println("Succesfully created directory5");
}
if(SD.mkdir("^")){
Serial.println("Succesfully created directory6");
}
if(SD.mkdir("&")){
Serial.println("Succesfully created directory7");
}
if(SD.mkdir("*")){
Serial.println("Succesfully created directory8");
}
void loop(){
}
当我输入def test():
global a
a = 0
a+=1
def test2():
a+=1
print (a)
inp = input('a?')
if inp == 'a':
test()
test2()
时。我希望代码输出2.但是,我收到此错误a
。当我搜索这个时,我发现你需要使用UnboundLocalError: local variable 'a' referenced before assignment
,但我已经在使用它了。
所以我不明白。有人可以简单地解释一下我做错了什么吗? 感谢。
答案 0 :(得分:1)
global
声明仅适用于该函数。因此test()
中的声明意味着在该函数中使用变量a
将引用全局变量。它对其他函数没有任何影响,因此如果test2
也想访问全局变量,那么你也需要相同的声明。
def test2():
global a
a += 1
print(a)
答案 1 :(得分:1)
1)您可以返回修改后的值,如:
def test():
a = 0
a+=1
return a
def test2(a):
a+=1
print (a)
inp = input('a?')
if inp == 'a':
a = test()
test2(a)
2)或者你可以使用一个类:
class TestClass:
a = 0
def test(self):
self.a = 0
self.a+=1
def test2(self):
self.a+=1
print (self.a)
选项2的用法:
>>> example = TestClass()
>>> example.test()
>>> example.test2()
2