Python 3.x 为什么可以';在AWS Lambda中访问全局

Python 3.x 为什么可以';在AWS Lambda中访问全局,python-3.x,amazon-web-services,aws-lambda,Python 3.x,Amazon Web Services,Aws Lambda,我正在尝试设置一个AWS Lambda函数,并且一如既往,我将常量保存在全局变量中。但是由于某种原因,我得到了如下所示的错误。我一直这样做,从来没有问题。我自己打了这个,并重新打了很多次,所以没有奇怪的unicode字符。我想我快疯了 这是因为您在同一函数中设置了b=False。通过在函数中设置它,它将变量重新定义为局部变量而不是全局变量 要这样使用它,需要将b定义为全局变量,例如 def lambda_handler(event, context): global b prin

我正在尝试设置一个AWS Lambda函数,并且一如既往,我将常量保存在全局变量中。但是由于某种原因,我得到了如下所示的错误。我一直这样做,从来没有问题。我自己打了这个,并重新打了很多次,所以没有奇怪的unicode字符。我想我快疯了


这是因为您在同一函数中设置了
b=False
。通过在函数中设置它,它将变量重新定义为局部变量而不是全局变量

要这样使用它,需要将b定义为全局变量,例如

def lambda_handler(event, context):
    global b
    print(b[0])
    b = False

啊!我知道全局有效,但我没有意识到
b=False
会为整个方法重新定义它。但现在我真的想到了,从编译器的角度来看,它是非常有意义的!很高兴这有帮助:)也许这只是测试代码,没关系,但我强烈建议您不要在实际代码中以这种方式将
b
从列表重新定义为布尔值。另外,请注意,这将影响Lambda函数的下一次热调用,并导致其失败。