np.vectorize在赋值之前引用的局部变量(?)

时间:2018-02-08 15:14:57

标签: python python-3.x numpy optimization vectorization

我正在编写一个python代码,我想对datetime.datetime实例进行一些修改。我能够使代码工作,但我不明白为什么,我只是给出了错误要求的内容。

def ts_round(ts,lev,p):
    sum = False
    hour = 0
    minute = 0
    second = 0

    if 'hour' is lev:
        a = ts.hour // p

        if (ts.hour%p)>=(p*0.5):
            a += 1

        hour = a * p
        minute = ts.minute
        second = ts.second

        if hour == 24: #si llega a 24 hay que sumar un dia
            new_ts = dt.datetime(ts.year,ts.month,ts.day,hour-1,ts.minute,ts.second)
            new_ts = new_ts + dt.timedelta(hours=1)
            sum = True

    elif 'minute' is lev:
        a = ts.minute // p

        if (ts.minute%p)>=(p*0.5):
            a += 1

        minute = a * p
        second = ts.second
        hour = ts.hour

        if minute == 60: #si llega a 60 hay que sumar una hora
            new_ts = dt.datetime(ts.year,ts.month,ts.day,ts.hour,minute-1,ts.second)
            new_ts = new_ts + dt.timedelta(minutes=1)
            sum = True

    elif 'second' is lev: #si llega a 60 hay que suma un minuto
        a = ts.second // p

        if (ts.second%p)>=(p*0.5):
            a += 1

        second = a * p
        hour = ts.hour
        minute = ts.minute

        if second == 60:
            new_ts = dt.datetime(ts.year,ts.month,ts.day,ts.hour,ts.minute,second-1)
            new_ts = new_ts + dt.timedelta(seconds=1)
            sum = True

    if sum:
        return new_ts
    else:
        return dt.datetime(ts.year,ts.month,ts.day,hour,minute,second)

如果我不评论,这是完美的 'hour = 0,minute = 0,second = 0'开头(就像在这篇文章中一样)。你能解释一下为什么吗?

谢谢!

0 个答案:

没有答案