在lambda中使用导入的函数 - Python

时间:2014-04-17 12:53:37

标签: python django lambda

我正在尝试根据不同的参数创建一个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中使用导入的函数。

1 个答案:

答案 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中,所以这个答案可能无关紧要。