首页 > 解决方案 > 为什么我在尝试分配变量时收到 UnboundLocalError?

问题描述

我想将“main()”中的局部变量“length”分配给另一个函数返回的值。然而,当我分配变量时,IDLE 告诉我在分配它之前我正在引用它。如何分配此局部变量以使其不会导致错误?

import random

def length():
    return 2

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

main()

我希望通过引用长度()将“长度”分配给“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

标签: pythonpython-3.6

解决方案


length要么是包含整数的局部变量,要么是引用函数的全局变量。不可能两者兼而有之。一旦您分配给它,它就是整个函数的局部变量,因此不再引用长度函数。


推荐阅读