在python中使用time.sleep打印vs返回

时间:2015-04-28 15:07:04

标签: python time

有人可以向我解释为什么使用" print"在下面将继续重新运行代码,但使用" return"只运行一次?你将如何使用" return"重新运行自己的代码?而不是" print" ??

谢谢你" ll!

def stop():
    while True:
        oanda = oandapy.API(environment="practice", access_token="xxxxxxxx")
        response = oanda.get_prices(instruments="EUR_USD")
        prices = response.get("prices")
        asking_price = prices[0].get("ask")
        s = asking_price - .001
        print s
    time.sleep(heartbeat)


print stop()

VS

def stop():
    while True:
        oanda = oandapy.API(environment="practice", access_token="xxxxxxxxxx")
        response = oanda.get_prices(instruments="EUR_USD")
        prices = response.get("prices")
        asking_price = prices[0].get("ask")
        s = asking_price - .001
        return s
    time.sleep(heartbeat)


print stop()

2 个答案:

答案 0 :(得分:4)

return s

stop()返回。它确实 continue while循环。如果你想留在循环中,不要从函数返回。

答案 1 :(得分:3)

  

有人可以向我解释为什么使用" print"在下面的   将继续重新运行代码,但使用" return"只会运行一次吗?

:一种。

return完全退出该功能,因此无法重新启动。

  

你将如何重新运行自己的代码?   "返回"而不是" print"?

使用"yield"代替"返回"创建一种称为generator的可恢复函数。

例如:

def stop():
    while True:
        oanda = oandapy.API(environment="practice", access_token="xxxxxxxx")
        response = oanda.get_prices(instruments="EUR_USD")
        prices = response.get("prices")
        asking_price = prices[0].get("ask")
        s = asking_price - .001
        yield s

g = stop()
print next(g)
print next(g)
print next(g)