function vs lambda statement

时间:2012-05-01 03:11:17

标签: python

Lambda让我感到困惑,这就是我所拥有的:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f")

如果我写这样的函数:

def time(d):
    t = datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f")
    return t.strftime("%d-%b-%Y-%H")

我可以return t.strftime("%d-%b-%Y-%H")

我可以在我的lambda语句中嵌入像t.strftime("%d-%b-%Y-%H")这样的东西吗?

编辑

我试过这个:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

但它返回:

  

AttributeError:'str'对象没有属性'strftime'

使用函数不会发生..

2 个答案:

答案 0 :(得分:3)

是的,你可以这样做:

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

我在Python 2.7上测试了这个:

>>> lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-%H:%M:%S.%f").strftime("%d-%b-%Y-%H")
>>> lmb({"Date[G]": "22-Apr-2012", "Time[G]": "07:23:24.123"})
'22-Apr-2012-07'

答案 1 :(得分:3)

不确定

lmb = lambda d: datetime.datetime.strptime(d["Date[G]"]+"-"+d["Time[G]"], "%d-%b-%Y-`%H:%M:%S.%f").strftime("%d-%b-%Y-%H")

但使用函数很快就会有意义。