为什么我可以访问Python中函数外部有条件定义的变量? 我是C、C++和java背景的。因此,我很想知道为什么以下Python代码可以工作: def f1(): print(xy) if __name__ == "__main__": print("Hello") xy = 34 f1()

为什么我可以访问Python中函数外部有条件定义的变量? 我是C、C++和java背景的。因此,我很想知道为什么以下Python代码可以工作: def f1(): print(xy) if __name__ == "__main__": print("Hello") xy = 34 f1(),python,Python,它打印 Hello 34 如何在函数f1中访问xyxy未在f1中定义,如果中的xy是在的条件块中定义的,前提是 全局变量 在Python中,在函数外部或全局函数中声明的变量 作用域称为全局变量。这意味着,全局变量可以是 在函数内部或外部访问 在许多或大多数其他编程语言中,如果不声明变量,则将变量视为全局变量,而Python则以另一种方式处理变量。它们是本地的,如果没有另外声明的话 def f(): print(x) x = "Something" f() 这会打印“某物”这能回答您的问

它打印

Hello
34
如何在函数
f1
中访问
xy
xy
未在
f1
中定义,如果中的xy是在
的条件块中定义的,前提是

全局变量

在Python中,在函数外部或全局函数中声明的变量 作用域称为全局变量。这意味着,全局变量可以是 在函数内部或外部访问


在许多或大多数其他编程语言中,如果不声明变量,则将变量视为全局变量,而Python则以另一种方式处理变量。它们是本地的,如果没有另外声明的话

def f():
   print(x)
x = "Something"
f()

这会打印“某物”

这能回答您的问题吗?Python没有在
C++
中使用的封闭作用域。在第
xy=34
行,变量
xy
被输入本地模块范围。但在您的示例中,
x
是全局变量。这很好,我可以将其理解为全局变量。我不明白的是,
xy
变量是在
if
条件下定义的。一个
if
条件变量如何在其块外访问?if语句不是函数,函数中声明的变量是局部变量,函数外声明的所有变量都是全局变量