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())






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

l = locals()

l["x"] = 111

l["y"] = 222



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

需要的时候调用那个假的x,或者y的时候, 写上locals()就行比如print locals(),就能看到x,y了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值