在Python中有类似于Harmony的let关键字的东西吗?
在Harmony中,有一个叫做let
的关键词,它可以用来声明变量,这些变量的作用范围仅限于最近的代码块。例如:
function foo() {
if (true){
let a = 100;
}
return a
}
这样写会出错,因为a
这个变量只在if
代码块里面被定义。
我知道我可以用del
来达到类似的效果,但那是手动的,而let
关键词是自动处理的。
1 个回答
2
在Python中,每个类、模块、函数或生成器表达式都会创建一个作用域。简单来说,就是在这些地方定义的变量和函数只在它们各自的范围内有效。在代码块内部是没有独立的作用域的。如果你想实现某些功能,可以考虑使用嵌套函数,也就是在一个函数里面再定义一个函数,比如:
def outside():
def inside():
var=5
print var
如果你在外部调用这个嵌套函数,会得到以下结果:
outside()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 5, in outside
NameError: global name 'var' is not defined