Python3:变量作用域

Python 3: Variable Scoping

def max_sum_subarray(arr):
    cur_max_sum = global_max_sum = arr[0]
    start = end = 0

    sz = len(arr)
    for i in range(1, sz):
        cur_max_sum = max(arr[i], cur_max_sum+arr[i])
        global_max_sum = max(global_max_sum, cur_max_sum)
        if cur_max_sum > global_max_sum:
            global_max_sum = cur_max_sum
            end = i
    g = global_max_sum

    for i in range(end, -1, -1):
        g -= arr[i]
        if not g:
            start = i
            break

    ans = {
        'global_max_sum': global_max_sum,
        'start': start+1,
        'end': end+1
    }
    return ans

此处,startend 不会在 if 下的 for 循环内更新,尽管条件满足。 如果在if中使用startend,则没有问题。是否存在任何范围界定问题或其他问题?请详细解释一下。

提前致谢。

逻辑错误:

global_max_sum = max(global_max_sum, cur_max_sum)
if cur_max_sum > global_max_sum:

cur_max_sum 根本不可能大于 global_max_sum