<分区>
我是 Python 初学者,有 C/C++ 背景。我正在使用 Python 2.7。
我读了这篇文章:A Beginner’s Guide to Python’s Namespaces, Scope Resolution, and the LEGB Rule ,我想我对 Python 的这些技术有一些了解。
今天我意识到我可以像这样写 Python 代码:
if condition_1:
var_x = some_value
else:
var_x = another_value
print var_x
也就是说,即使 未在 if 之前定义 var_x,它仍然是可访问的。因为我是C/C++出身,所以这对我来说是个新鲜事,因为在C/C++中,var_x
定义在if和else所包围的范围内,所以你不能再访问它,除非你在 if
之前定义 var_x
。
我曾尝试在 Google 上搜索答案,但由于我对 Python 还是个新手,我什至不知道从哪里开始以及应该使用哪些关键字。
我的猜测是,在 Python 中,if
不会创建新的作用域。 if
中新定义的所有变量都在 if
所在的范围内,这就是为什么在 if
之后变量仍然可以访问的原因>。但是,如果在上面的示例中,var_x
仅在 if
中定义,而没有在 else
中定义,则会发出警告,指出print var_x
可能引用了一个 undefined variable 。
我对自己的理解有些自信。但是,如果我哪里错了,有人可以帮助纠正我,或者给我一个讨论这个问题的文档的链接吗??
谢谢。