【发布时间】:2016-10-03 08:54:15
【问题描述】:
我对以下代码的输出有疑问:
def f():
global s
print(s)
s = "That's clear."
print(s)
s = "Python is great!"
f()
print(s)
输出是这样的:
Python 很棒!
这很清楚。
这很清楚。
我的问题是:为什么最后一个输出(即第三个输出)也是“很清楚”。
为什么第三个输出不是“Python 很棒!” .
我认为代码中的最后一条语句(即 print(s))语句在函数 f() 之外。那么这里的 print(s) 不应该查看全局定义的 s 变量吗?在这种情况下,全局定义的变量 s 将引用值“Python 很棒!”,不是吗?抱歉,我一定有一些概念误解了。我是python的新手。谁能解释一下这个简单的概念。
【问题讨论】:
-
很明显你的缩进是错误的,所以如果不知道什么是正确的,就很难回答预期的行为。
-
让我们大胆猜测一下,并建议当您声明
s为全局时,函数f中s的重新定义将全局s更改为“很清楚”跨度> -
@John_w,我修正了你的缩进,在这种情况下很明显,但通常尝试以与本地完全相同的格式发布代码。