有人能告诉我在哪里可以找到有关if语句中变量生命周期的一些信息吗?在这段代码中:
if 2 < 3:
a = 3
else:
b = 1
print(a)
Run Code Online (Sandbox Code Playgroud)
它打印变量a。但在我看来,它是if语句的局部变量。在 C infacts 中,如果我a在if语句中创建变量,它会给我一个错误。
我认为这种行为是因为 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 没有块级作用域。您可以在此处获取有关它的更多信息