簡體   English   中英

如何從python中的預定函數返回值?

[英]How to return values from a scheduled function in python?

我正在使用 Finnhub api 來獲取一些實時數據。 我有 2 個代碼,一個將每天登錄一次 api,第二個將每小時提供一次數據。

第一個函數將為第二個函數提供詳細信息,第二個函數將根據該函數獲取數據。

這是我的第一個函數

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

我想將輸出 ie 符號和 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)

在上面的代碼中,如何保存第一個函數的返回值,然后將其用於第二個函數?

您可以將所有這些包裝在一個類中並使用類變量。 您可以實例化您的類並使用那里的函數。 每次運行第一個函數時,類變量都會改變。 第二個函數將使用類變量而不是函數參數。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM