變 數: Global, Local ?

def add_ten():
    y =  x + 10
    return y

x = 10
x = add_ten()
print(x)

20
def add_ten():
    x =  x + 10
    return x

x = 10
x = add_ten()
print(x)

  File "<模块1>", line 2, in add_ten
UnboundLocalError: local variable 'x' referenced before assignment

在不使用global情況下, 為什麼兩個X定義不一樣 (一個global, 一個local) ?
問題不在怎麼可以得正確的結果, 而是為什麼會這樣 ? 怎樣才可以得到正確的結果? (不使用global, 也不用參數傳遞)

Jason Yang
最佳答案

在Python中,如果变量仅仅是被引用而没有被赋值过,那么默认被视作全局变量。如果一个变量在函数中被赋值过,那么就被视作局部变量。
ref: https://stackoverflow.com/questions/926476...

4年前 评论
Jason990420 (楼主) 4年前
讨论数量: 3

在Python中,如果变量仅仅是被引用而没有被赋值过,那么默认被视作全局变量。如果一个变量在函数中被赋值过,那么就被视作局部变量。
ref: https://stackoverflow.com/questions/926476...

4年前 评论
Jason990420 (楼主) 4年前

在函数里的变量称作局部变量(只有在函数里生效的变量),函数外的称作全局变量(无论在哪里都能生效的变量)。举个例子:一个人叫jack,住在美国。还有一个jack住在非洲。他们是同一个人吗?当然不是。虽然名字一样,但身份不一样。python也是这个道理。
至于如何获取正确的结果,最简单的方法就是把局部变量x的名改成y。
def add_ten():
y = x + 10
return y

4年前 评论

不太理解你写的函数,你要实现要求就这样写阿,纠结那个有什么用

file

4年前 评论
Jason990420 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!