如果我尝试以下代码(在Python 3.2.2中), raise Exception
然后,看起来x是原封不动的-它要么保持未定义,要么保留它以前拥有的任何值当赋值的右侧抛出异常时,这一行为是否得到保证?我意识到这是一个非常基本的问题,但我找不到太多关于任务具体是如何工作的信息。更一般地,是否总是在与赋值相关的任何事情发生之前对整个右侧进行计算?当使用setattr,赋值给列表的元素,或者使用元组解包(例如,类似x, y = y, f()的东西)时,这是真的吗?
在学习python的过程中,我了解到python是逐行运行的,除非执行一行代码,否则它不会创建或赋值变量,这一理论很好,直到我尝试了以下内容: printhere print (X) # and then use local X here
我知道global关键字也可以解决这个问题,如果我在method1()中删除X的赋值就可以解决这个问题,并且全局X会被打印出来,但是我不能理解python是如何事先知道在function