Python 为什么说UnboundLocalError:localvariable';最大量程';当我已分配它时,在分配之前引用它
为什么我已经分配了“名称‘最大范围’未定义”。 这是对一个问题的尝试 示例阵列:Python 为什么说UnboundLocalError:localvariable';最大量程';当我已分配它时,在分配之前引用它,python,python-3.x,local-variables,Python,Python 3.x,Local Variables,为什么我已经分配了“名称‘最大范围’未定义”。 这是对一个问题的尝试 示例阵列: array = [1, 11, 3, 0, 15, 5, 2, 4, 10, 7, 12, 6] def largestRange(array): # Write your code here. sub_array = array # substitute array as it will be modified later3 Range = [0,0] max_range = [
array = [1, 11, 3, 0, 15, 5, 2, 4, 10, 7, 12, 6]
def largestRange(array):
# Write your code here.
sub_array = array # substitute array as it will be modified later3
Range = [0,0]
max_range = [0,0]
def run() :
global max_range
num = min(sub_array)
Range = [num]
running = True
while running :
num += 1
if num not in sub_array :
Range.append(num - 1)
running = False
pass
else :
sub_array.remove(num)
pass
pass
print(Range)
print(max_range)
if (max_range[1] - max_range[0]) <= (Range[1] - Range[0]) :
max_range = Range
if len(sub_array) != 0:
run()
pass
run()
print(max_range)
return max_range
pass
largestRange(array)
stack overflow说我的问题主要是代码,所以我只写这行代码,这样我就可以发布问题了
示例可复制的代码:
def largestRange(array):
# Write your code here.
sub_array = array # substitute array as it will be modified later3
Range = [0, 0]
max_range = [0, 0]
def run():
global max_range
num = min(sub_array)
Range = [num]
running = True
while running:
num += 1
if num not in sub_array:
Range.append(num - 1)
running = False
pass
else:
sub_array.remove(num)
pass
pass
print(Range)
print(max_range)
if (max_range[1] - max_range[0]) <= (Range[1] - Range[0]):
max_range = Range
if len(sub_array) != 0:
run()
pass
run()
print(max_range)
return max_range
pass
largestRange([1, 11, 3, 0, 15, 5, 2, 4, 10, 7, 12, 6])
def最大范围(数组):
#在这里编写代码。
sub_数组=数组#替换数组,因为它将在以后修改3
范围=[0,0]
最大范围=[0,0]
def run():
全局最大范围
num=min(子数组)
范围=[num]
运行=真
运行时:
num+=1
如果num不在子数组中:
Range.append(num-1)
运行=错误
通过
其他:
子数组。删除(num)
通过
通过
打印(范围)
打印(最大范围)
如果(最大范围[1]-最大范围[0])max\u范围
在全局范围中定义。所以“通过defualt”,它在函数的局部范围中也是可见的
max_range=无论什么
def run():
....
打印(最大范围)#正常
但是,在函数内部设置max\u range=range
,然后将max\u range
视为函数的局部变量,即在all函数中,它与全局max\u range
max_range=无论什么
def run():
....
打印(最大范围)#错误,因为本地最大范围尚未声明
max_range=range#这使max_range成为本地的
编辑(编辑问题)
global
关键字适用于全局变量。在代码中,您在函数(不在全局范围内)中定义了max_range
,并且希望在内部函数中对其进行更改。您可以实现这一点,例如,将其作为参数并返回修改后的值:
def最大范围(数组):
...
最大范围=[0,0]
def运行(最大范围):
... # 你的密码是什么
返回最大范围
最大范围=运行(最大范围)
...
在Python中,默认情况下,分配给的变量被视为局部变量。。。i、 e.在
x = 3
def foo():
print(x) # <--- error: x is considered a local
# because of next statement, but at this
# point it has not yet received any value
x = 5
x=3
def foo():
打印(x)#我不明白我的意思是保留原始代码(否则问题的标题没有意义),但要在下面添加修改后的代码,请编辑问题,使其正确。请HH sryy现在我该怎么办?好的,我会这么做,但我该如何做更改请参见6502的答案,使用global
keyword,但当它给出文件“/tester/program.py”,第23行,运行中打印(最大范围)名称错误:名称“最大范围”不是defined@Mehul:没有。。。错误是UnboundLocalError:赋值前引用的局部变量“max_range”
。在第一个示例中,您将得到关于x
的相同错误。Python决定它是本地的,但是如果你在赋值之前使用它,它会给出你得到的错误。我非常困惑,我现在该怎么办??请告诉我,我对蟒蛇很陌生等等,我会的
x = 3
def foo():
print(x) # <--- error: x is considered a local
# because of next statement, but at this
# point it has not yet received any value
x = 5
x = 3
def foo():
global x # <--- this informs x is global even if there are assignments
print(x) # <--- prints the global
x = 5 # <--- ok, this changes the global