【问题标题】:Getting return value of a function run by schedule获取按计划运行的函数的返回值
【发布时间】:2018-04-20 13:07:08
【问题描述】:

所以我有一个函数可以检查我最喜欢的运动队那天是否参加比赛:

def checkGameDay():

today = str(datetime.date.today())
yyyymmdd = today.replace('-', '')
#yyyymmdd = '20171104' #test date that toronto played on (lost 6-4 to stL)
url = 'http://scores.nbcsports.msnbc.com/ticker/data/gamesMSNBC.js.asp?sport=%s&period=%s'
r = requests.get(url % ('NHL', yyyymmdd))
json_parsed = r.json()
check = 0

for game_str in json_parsed.get('games', []):
    game_tree = ElementTree.XML(game_str)
    away_tree = game_tree.find('visiting-team')
    home_tree = game_tree.find('home-team')
    gamestate_tree = game_tree.find('gamestate')
    home_nickname = home_tree.get('nickname')
    away_nickname = away_tree.get('nickname')
    home_alias = home_tree.get('alias')
    away_alias = away_tree.get('alias')
    away_score = away_tree.get('score')
    home_score = home_tree.get('score')
    x = 0;
    gamesToday = len(json_parsed.get('games', []))

    if away_alias == 'Tor' or home_alias == 'Tor':
        checkGoal()
        print "Toronto is playing today"
        return True         

    else:
        check = check + 1

    if check == gamesToday:
        print "Toronto does not play today" 
        return False

我是新手程序员,所以请忽略我缺少的任何“良好做法”或“更有效的方法”!

如果 Toronto 在那天比赛,则返回 True,否则返回 False。我希望返回此值,以便稍后在代码中使用它的结果,尽管我不知道如何获得计划事件的返回。

我使用此代码设置了时间表:

schedule.every().day.at("18:00").run(checkGameDay)

while True:
    schedule.run_pending()
    time.sleep(1)

我知道应该触发退货,因为打印效果非常好!

有人知道如何创建一个接受此返回值的变量吗?非常感谢!我很纠结这个...

【问题讨论】:

  • 您的代码的问题是您在循环中返回值,这不应该是这种情况。尝试在循环外定义一个变量,该变量在每次循环迭代后自行更新,您可以将该变量返回并存储在其他函数中。

标签: python return scheduled-tasks schedule


【解决方案1】:

试试这样的:

 bool_value = False

def test_function():
    global bool_value
    #bool_value = False

    for i in range(10):
        if i%2 == 1:
            bool_value = True
        else:
            bool_value = False

    #return bool_value

storedVariable = bool_value

不要从函数返回任何值。全局定义变量并更新它以供以后使用。

希望这会有所帮助。

【讨论】:

  • 嗨 Bhushan,我改变了我的函数,以便变量在你提到的循环之外定义,虽然我不能使用你的最后一行,因为我正在尝试使用调度程序,我需要获取当时函数的返回值,当我尝试类似以下内容时它似乎不起作用:bool_value = schedule.every().day.at("18:00").run(checkGameDay)Thanks!
  • 那么,只是为了我的理解,当您运行调度程序时,它可以返回超过 1 个值?
  • 感谢所有建议!不幸的是,使用全局变量也不起作用......我相信它在正常情况下会起作用,但由于我使用调度调用函数的方式把事情搞砸了。还有其他想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多