locals() 在django当中的一处妙用

从django的manual 当中看到的

def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})


很多时候,就像在这个范例中那样,你发现自己一直在计算某个变量,保存结果到变量中
(比如:前面代码中的 now ),然后将这些变量发送给模板。特别懒的程序员可能注意到给
这些临时变量 和 模板变量命名显得有点多余。不但多余,而且还要进行额外的键盘输入。
如果你是个喜欢偷懒的程序员并想让代码看起来更加简明,可以利用 Python 的内建函数
locals() 。它返回的字典对所有局部变量的名称与值进行映射。因此,前面的视图可以重写
成下面这个样子:
def current_datetime(request):
    current_date = datetime.datetime.now()
    return render_to_response('current_datetime.html', locals())






而且, 虽然locals()返回的是一份拷贝,但是依然可以往里面赋值,就像使用map一样,

l = locals()

l["x"] = 111

l["y"] = 222



尽管不能print x,print y, 但是

需要的时候调用那个假的x,或者y的时候, 写上locals()就行比如print locals(),就能看到x,y了

猜你喜欢

转载自54yuri.iteye.com/blog/1768747
今日推荐