python函数返回nonetype,但我可以将其转换为字符串,而不是null

时间:2017-07-05 19:54:38

标签: python-2.7

所以基本上已经导入了一个类,并且从它调用了一个函数。被调用的函数应该返回一个浮点数,但是当我对它执行加法时,它表示不能添加类型float和NoneType。

然而,我可以将返回的值转换为字符串并打印它,因此它不能为空。我虽然NoneType为null或没有返回值。

调用功能

    def showPositions(self):
         runningprofit = float(0)
         for trade in self.trades:
         #self.output.log("what does this show?" + str(trade.showTrade()))
         runningprofit += trade.showTrade()

被叫功能

def showTrade(self):
    tradeStatus = "Entry Price: "+str(self.entryPrice)+"\tStatus: "+str(self.status)+"\tExit Price: "+str(self.exitPrice)

    if (self.status == "CLOSED"):
        tradeStatus = tradeStatus + "\tProfit: "
        if (self.exitPrice > self.entryPrice):
            tradeStatus = tradeStatus + "\033[92m"
        else:
            tradeStatus = tradeStatus + "\033[91m"



        tradeStatus = tradeStatus+str(self.exitPrice - self.entryPrice)+"\033[0m"
        self.output.log(tradeStatus)
        return(float(self.exitPrice - self.entryPrice))

返回的错误是:

runningprofit += trade.showTrade()

TypeError: unsupported operand type(s) for +=: 'float' and 'NoneType'

1 个答案:

答案 0 :(得分:0)

这是因为以下条件是False

if (self.status == "CLOSED"):

然后,没有分支返回正确的值,因此返回None

None无法添加到Float,因此您收到错误。

您的选项要么处理CLOSED中的所有非showTrade()状态,要么处理None中的showPositions()