我正在尝试根据不同的参数创建一个timedelta字典。例如。
from django.utils import timezone
a = {'Minutes':(lambda dt,delta: dt + timezone.timedelta(minutes=delta)),
'Hours': (lambda dt,delta: dt + timezone.timedelta(hours=delta)}
现在使用上面的词典时:
new_time = a['Minutes'](timezone.now(),10)
它出现以下错误:
/usr/local/lib/python2.7/dist-packages/django/core/management/commands/shell.pyc in <lambda>(dt, delta)
----> 1 a = {'Minutes':(lambda dt,delta: dt + timezone.timedelta(minutes=delta))}
NameError: global name 'timezone' is not defined
请解释为什么我不能在lambda中使用导入的函数。
答案 0 :(得分:5)
参考此处:https://code.djangoproject.com/ticket/18204
(在Django 1.6中修复)
另见:
https://stackoverflow.com/a/19004592/202168
https://github.com/ipython/ipython/issues/2532/
我在这里发布了这个,因为我经常遇到这个问题(并且这几条评论似乎与shell有关),虽然OP没有声明它们完全在Django shell中,所以这个答案可能无关紧要。