Answers:
Python变量的作用域是分配给它们的最里面的函数,类或模块。控制块(如if
和while
块)不计在内,因此在内分配的变量的if
作用域仍限于函数,类或模块。
(由生成器表达式或list / set / dict理解定义的隐式函数与lambda表达式一样进行计数。您不能将赋值语句填充到其中任何一个中,但是lambda参数和for
子句目标是隐式赋值。)
是。for
范围也是如此。但是当然不起作用。
在您的示例中:如果if
语句中的条件为false,x
则不会定义。
if
上述声明不为真(即,__name__
是不是'__main__'
,例如当您导入模块,而不是执行它顶级的),那么x
将永远不会被束缚,以及随后的print x
声明会抛出一个NameError: name 'x' is not defined
。