if语句中的Python生命变量

Gio*_*nni 0 python

有人能告诉我在哪里可以找到有关if语句中变量生命周期的一些信息吗?在这段代码中:

if 2 < 3:
   a = 3
else:
   b = 1
print(a)
Run Code Online (Sandbox Code Playgroud)

它打印变量a。但在我看来,它是if语句的局部变量。在 C infacts 中,如果我aif语句中创建变量,它会给我一个错误。

我认为这种行为是因为 Python 是一种解释型语言。我对吗?

小智 5

Python 变量的作用域是分配给它们的最里面的函数、类或模块。像 if 和 while 块这样的控制块不计算在内,因此在 if 内分配的变量仍然作用域为函数、类或模块。然而,由生成器表达式或列表/集合/字典推导式定义的隐式函数和 lambda 表达式一样重要。您不能将赋值语句填充到其中任何一个中,但 lambda 参数和 for 子句目标是隐式赋值。

考虑到你的例子:

if 2 < 3:
   a = 3
else:
   b = 1
print(a)
Run Code Online (Sandbox Code Playgroud)

请注意,a与 C 或 Java 不同,它没有在条件之前声明或初始化,换句话说,Python 没有块级作用域。您可以在此处获取有关它的更多信息