Python 2.7 - 本地vs全局变量

时间:2016-06-30 09:19:28

标签: python-2.7 global-variables local-variables

所以我正在学习Python 2.7中的全局和局部变量之间的差异,并根据我的理解

local var 是在函数中定义的一个 globar var 是在函数外部定义的。

我创建了这个简单的函数来测试这些本地和全局变量在组合使用时如何工作

def f():
    global s
    print s
    s = "Python is great."
    print s 

在我运行该函数之前,我声明了全局s

s = "I love python!" 
f()

输出结果为:

>>> f()
I love python
Python is great

我理解这一部分,但我不明白的是,当我在函数外部调用print s时,为什么打印局部变量而不是全局变量。这是否意味着全局变量s被使用一次并被丢弃?

>>> print s
Python is great

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

  

...我不明白的是,当我在函数外部调用print s时,为什么打印局部变量而不是全局变量。

该功能中有本地sglobal s语句导致Python VM在全局范围内使用s,即使绑定它也是如此。

答案 1 :(得分:0)

您使用s语句将global s声明为函数中的全局,覆盖默认行为。由于s现在是全局的,并且您为其分配了新值,因此该更改在全局范围内可见。