"cannot access local variable 'a' where it is not associated with a value" ,但定义了该值



我不知道为什么当a位于def test()时,它找不到并给出错误

UnboundLocalError:无法访问没有关联值的局部变量'a'

import keyboard
import time
a = 0
def test():
a+= 1
print("The number is now ", a)
time.sleep(1)
while keyboard.is_pressed('i') == False:

test()

我尝试将a设置为global a或在def内使用nonlocal修饰符,但它似乎不起作用。是否有一种方法可以让它识别a并正常运行?

Python变量是基于作用域的。这意味着不能访问在函数中声明的值。但是你可以访问在函数外部声明的变量。

这将失败:

def func():
a = 1
func()
print(a)

这将打印1:

def func():
print(a)
a = 1
func()

注意你可以访问它。如果你想更新它,你会失败的。

这个也会失败:

def func():
a = a + 1
print(a)
a = 1
func()

你不需要告诉解释器在全局作用域中找到变量a

def func():
global a
a = a + 1
print(a)
a = 1
func()

警告:使用global变量不是一个好的做法。因此,最好确保函数正在获取值。

def func(a):
a = a + 1
print(a)
a = 1
func(a)

要访问函数中的全局变量,必须使用global指定它。否则,函数内的变量是一个局部变量,仅在该函数内具有实用性。这就是为什么你会得到错误:&;UnboundLocalError:在赋值之前引用的局部变量'a' &;在函数内部,你还没有定义变量'a',无论是局部的还是全局的。

import keyboard
import time
a = 0
def test():
global a
a+= 1
print("The number is now ", a)
time.sleep(1)
while keyboard.is_pressed('i') == False:

test()

功能测试需要通过a。Python认为函数中的a是一个局部变量。

import keyboard
import time
a = 0
def test(a=a):
a+= 1
print("The number is now ", a)
time.sleep(1)
while keyboard.is_pressed('i') == False:
test()

相关内容

  • 没有找到相关文章

最新更新