Python局部变量作用域

Python局部变量作用域,python,Python,我即将进行期末考试,这是我唯一无法正确回答的问题: 问题4 word = 'off' prev = "" for letter in word: if prev == ""; prev = letter out = "" continue elif letter == prev: prev = letter out = letter break else: pr

我即将进行期末考试,这是我唯一无法正确回答的问题:

问题4

word = 'off'
prev = ""
for letter in word:
    if prev == "";
        prev = letter
        out = ""
        continue
    elif letter == prev:
        prev = letter
        out = letter
        break
    else:
        prev = letter
        out = word[0]
print(out)
a) o
b) f
c) 属于
d) “”(空字符串)
e) 以上都没有


当我试图解决这个问题时,我认为答案是“以上都没有”,因为
out
是在局部变量范围内定义的,不再存在于
if
语句的每个部分之外。当我在编译器中运行代码检查我的答案时,我发现正确答案是b。有人能解释为什么局部变量范围允许这个答案是正确的吗?提前感谢。

因为变量不是在函数或类中声明的,而是在全局范围中声明的

您可以在此处阅读更多信息:


此问题与变量范围无关:所有变量都位于全局范围内,因为不涉及函数或类等其他对象。(如果代码放在函数中,那么在函数中分配的名称将具有局部作用域。)我相信,问题只在于控制流和名称绑定;
for
if
语句没有自己的作用域。代码在函数或类中也可以正常工作。Python根本没有块作用域。