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

2 投票
1 回答
904 浏览
提问于 2025-04-18 03:07

我正在尝试根据不同的参数创建一个时间差字典。例如:

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中,所以这个回答可能不太相关。

撰写回答