在lambda中使用导入的函数 - Python
我正在尝试根据不同的参数创建一个时间差字典。例如:
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 个回答
5
参考链接在这里: https://code.djangoproject.com/ticket/18204
(在Django 1.6中已修复)
另见:
https://stackoverflow.com/a/19004592/202168
https://github.com/ipython/ipython/issues/2532/
我把这个发在这里是因为我经常遇到这个问题(而且有几个评论似乎和shell有关),尽管提问者并没有说明他们是否在Django的shell中,所以这个回答可能不太相关。