为什么在尝试分配变量时出现UnboundLocalError?

时间:2019-04-09 21:35:50

标签: python python-3.6

我想将局部变量“ main()”中的“ length”分配给另一个函数返回的值。但是,在分配变量的同时,IDLE告诉我在分配变量之前先对其进行引用。如何分配此局部变量,使其不会导致错误?

import random

def length():
    return 2

def main():
    length = length()
    index = random.randrange(0, length)

main()

我希望通过引用length()将“ length”分配给“ 2”。在我看来,“ length = length()”是一个简单,正确的赋值。

IDLE回溯为:

Traceback (most recent call last):
  File "/home/user/code/test1.py", line 10, in <module>
    main()
  File "/home/user/code/test1.py", line 7, in main
    length = length()
UnboundLocalError: local variable 'length' referenced before assignment

1 个答案:

答案 0 :(得分:2)

length是包含整数的局部变量,或者是引用该函数的全局变量。不能两者兼有。分配给它后,它便是整个函数的局部变量,因此不再引用长度函数。