2016-11-05 73 views
0
stored=0 
def store(arg): 
    stored=arg 
    return stored 
y=store(22) 
print(y) 
print(stored) 

输出:Python的本地范围和全局范围

22 
0 

我真的想了解,为什么print(stored)不等于22.Thank你这么多。

+1

因为你没有声明它是全局的。 – thebjorn

回答

0

因为函数不会改变位于全局范围内的stored。它在函数内部创建一个局部变量stored,给它赋值并返回它。分配会影响本地stored,它不会触及全局stored

你可以把它指的是全球stored使用global声明:

def store(arg): 
    global stored 
    stored = arg 
    return stored 

添加global <var_name>语句告诉Python stored指的是存在于全球范围的名称;功能storestored的任何分配/修改现在都将更改全局范围中的相应名称。