python : local variable is referenced before assignment
本问题已经有最佳答案,请猛点这里访问。
这是我的代码:
1 2 3 4 5 6 7 8 9 | x = 1 def poi(y): # insert line here def main(): print poi(1) if __name__ =="__main__": main() |
如果放置以下4行,则一次放置一行,以代替
1 2 3 4 5 6 7 | Lines | Output ---------------+-------------- 1. return x | 1 2. x = 99 | return x | 99 3. return x+y | 2 4. x = 99 | 99 |
在上面的行中,似乎在案例1和3中使用了上面声明的全局x函数。
但是,
1 2 | x = x*y return x |
这给了
1 | error : local variable 'x' is reference before assignment |
这里怎么了?
当python看到您要分配给
所以
案例1)由于没有本地的
案例2)您分配给本地
案例3)没问题,它又在使用全球
案例4)与案例2相同
当您想要访问一个全局变量时,您可以只通过它的名称访问它。但是如果你想改变它的值,你需要使用关键字
尝试:
1 2 3 | global x x = x * y return x |
在情况2中,x被创建为局部变量,全局x永远不会被使用。
1 2 3 4 5 6 7 8 9 | >>> x = 12 >>> def poi(): ... x = 99 ... return x ... >>> poi() 99 >>> x 12 |