python 3.5:if语句的计算结果为true,什么都不做,即使被告知要做某事

时间:2016-03-19 08:10:19

标签: python debugging python-3.5

对你来说,这是一场噩梦..完全是python3.5的故障!

print(value.time() > marketclosed)打印为True。

if value.time() > marketclosed:
   #somecode

不执行if语句中包含的代码。

目前在此上下文中使用。没有错误,不是编译器对此if语句的窥视。只是......没什么。

import datetime as dt

for i in range(0,int(total_intervals)):

    amount_to_add = dt.timedelta(hours=marketopen.hour,minutes=marketopen.minute) + dt.timedelta(seconds=interval_seconds)*i
    basevalue = start_datetime + amount_to_add
    value = basevalue
    print(value.time())
    print(marketclosed)
    print(value.time() > marketclosed)
    print(value.date())
    print(value.date().isoweekday())
    if value.time() > marketclosed:  # advance to next day
        value + dt.timedelta(days=1)
        value.combine(value.date(),marketopen)
它的幽灵......当世界处于伟大的边缘时,它就像世界一样停滞不前!

2 个答案:

答案 0 :(得分:2)

我非常确定这段代码会执行,它什么都不做,因为value + timedeltavalue.combine()的结果被丢弃了(它们创建了一个新对象,而没有改变原始对象)。这应该有效:

if value.time() > marketclosed:  # advance to next day
    value += dt.timedelta(days=1)
    value = value.combine(value.date(), marketopen)

Pylint必须至少将+部分报告为W0104, pointless-statement

答案 1 :(得分:1)

为什么你认为代码没有被执行?

您重置'值'每次使用basevalue,这样你就无法看到来自' if'言。

在'内打印一条线?用于检查是否正在执行的声明。