request.get работает за пределами функции, но не внутри функции - PullRequest
2 голосов
/ 22 марта 2020

Я пытаюсь создать свою собственную функцию для прохождения котировки акций через финансовый API и сбора ключевой финансовой крысы ios в ответе JSON.

#import packages
import pandas as pd
import requests
import json

def financialratios(quote):
    Chrislink = 'https://financialmodelingprep.com/api/v3/financial-ratios/'+str(quote)
    print(Chrislink)
    print(str("Link is a ")+str(type(Chrislink)))
    fr = requests.get(Chrislink)
    fr = fr.json()

Это возвращает результат «Нет», когда я его вызываю.

x = financialratios('AAPL')
print(x)

https://financialmodelingprep.com/api/v3/financial-ratios/AAPL
Link is a <class 'str'>
None

Однако, когда я беру всю эту работу ВНЕ функции , он возвращает ожидаемый результат ...

quote = 'AAPL'
Chrislink = 'https://financialmodelingprep.com/api/v3/financial-ratios/'+str(quote)
print(Chrislink)
print(str("Link is a ")+str(type(Chrislink)))
fr = requests.get(Chrislink)
fr = fr.json()
fr

{'symbol': 'AAPL',
 'ratios': [{'date': '2019-09-28',
   'investmentValuationRatios': {'priceBookValueRatio': '10.666314697418441',
    'priceToBookRatio': '10.666314697418441',
    'priceToSalesRatio': '3.709723048190826',
    'priceEarningsRatio': '17.46730643441436',
    'receivablesTurnover': '11.34842536857716',
    'priceToFreeCashFlowsRatio': '16.38775951405868',
    'priceToOperatingCashFlowsRatio': '13.909202696891526',
    'priceCashFlowRatio': '13.909202696891526',
    'priceEarningsToGrowthRatio': '1.3549431647588217',
    'priceSalesRatio': '3.709723048190826',
    'dividendYield': '0.014628458229615355',
    'enterpriseValueMultiple': '13.31637596061561',
    'priceFairValue': '10.666314697418441'},
...

Я уверен, что здесь я совершаю какую-то глупую ошибку, однако я не совсем уверен, что это за ошибка. Любое понимание того, почему это не сработает в функции, но за пределами этой функции?

1 Ответ

1 голос
/ 22 марта 2020

Вы должны вернуть fr из вашей функции следующим образом:

import pandas as pd
import requests
import json

def financialratios(quote):
    Chrislink = 'https://financialmodelingprep.com/api/v3/financial-ratios/'+str(quote)
    print(Chrislink)
    print(str("Link is a ")+str(type(Chrislink)))
    fr = requests.get(Chrislink)
    fr = fr.json()
    return fr

Надеюсь, это поможет!

...