Python只能使用变量一次

Python只能使用变量一次,python,Python,我正在玩Python,但遇到了一些我无法解释的行为 当我在文件顶部定义一个映射(我相信它在Python中被调用)时,当我运行两次代码时,我会得到一个数组,表示字符串索引超出范围。但是,当我在方法中定义map/dictionary时,它就会一次又一次地毫无问题地运行 试着给出一个简单的例子。这是我正在运行的主要方法 if __name__ == '__main__': while True: hex = convert_binary_to_hex([1,1,1,1]) print(

我正在玩Python,但遇到了一些我无法解释的行为

当我在文件顶部定义一个映射(我相信它在Python中被调用)时,当我运行两次代码时,我会得到一个数组,表示
字符串索引超出范围
。但是,当我在方法中定义map/dictionary时,它就会一次又一次地毫无问题地运行

试着给出一个简单的例子。这是我正在运行的主要方法

if __name__ == '__main__':
while True:
    hex = convert_binary_to_hex([1,1,1,1])
    print(hex)
这将调用一个函数,该函数将文件拆分为正确的部分等所有琐碎的事情。 一旦我得到十进制的结果(因此
[1,1,1,1]
被转换为15),我调用这个函数,它就是发生错误的地方:

def decimal_sum_chunk(chunk):
    chunk.reverse()
    sum = 0
    for i in range(len(chunk)):
        sum += chunk[i] * (2**i)

return digit_to_hex(sum)

def digit_to_hex(number):
    if number < 10:
        return str(number)

    # else we look up the value in the map
    return hex[number]
我已经创建了这个,当它不工作时,它会显示完整的代码。为了让它工作,我可以将
hex
map/dictionary放在函数中


谢谢

您正在用
hex=convert\u binary\u to\u hex([1,1,1,1])
覆盖
hex的值。。。(返回字符串)@Rawing damn。。是的,有时候你需要一双额外的眼睛。谢谢Fid您是否在函数中使用
globals hex
来尝试相同的程序?您正在用
hex=convert\u binary\u to\u hex([1,1,1,1])覆盖
hex
的值。。。(返回字符串)@Rawing damn。。是的,有时候你需要一双额外的眼睛。谢谢Fid是否在函数中使用
globals hex
来尝试相同的程序?
def digit_to_hex(number):
    hex = {10 : 'A', 11 : 'B', 12 : 'C', 13 : 'D', 14 : 'E', 15 : 'F'}

    if number < 10:
        return str(number)

    # else we look up the value in the map
    return hex[number]