首页 > 解决方案 > 如何从python中的预定函数返回值?

问题描述

我正在使用 Finnhub api 来获取一些实时数据。我有 2 个代码,一个将每天登录一次 api,第二个将每小时提供一次数据。

第一个函数将根据第二个函数获取数据的详细信息。

这是我的第一个功能

def finnhub_login():
    finnhub_client = finnhub.Client(api_key="xxxxxxxxxxxx")
   
    symbols = df['SYMBOLS'].to_list()
    return symbols,finnhub_client

我想将输出即符号和 finnhub 客户端用于第二个函数

这是第二个功能

def finnhub_api_call(symbols,finnhub_client):
    main_value = 0
    for i in symbols:
        
      data = finnhub_client.quote(['symbol'])
      main_value += data['dp']
      
    return main_value


schedule.every(1).day.do(finnhub_login)
schedule.every(1).hour.do(finnhub_api_call,symbols,finnhub_client)

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

在上面的代码中,如何保存第一个函数的返回值,然后将其用于第二个函数?

标签: python

解决方案


您可以将所有这些包装在一个类中并使用类变量。您可以实例化您的类并从那里使用函数。每次运行第一个函数时,类变量都会发生变化。第二个函数将使用类变量而不是函数参数。

class FinnhubCaller:
    def __init__(self):
        pass

    def finnhub_login(self):
        self.client = finnhub.Client(api_key="xxxxxxxxxxxx")
        self.symbols = df['SYMBOLS'].to_list()

    def finnhub_api_call(self):
        main_value = 0
        for i in self.symbols:
            data = self.client.quote(['symbol'])
            main_value += data['dp']
      
        return main_value

caller = FinnhubCaller()
schedule.every(1).day.do(caller.finnhub_login)
schedule.every(1).hour.do(caller.finnhub_api_call)

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


推荐阅读