requests로 가져와 만든 dataframe 을 저장하여, 간단히 다시 불러쓰는 방법.

조회수 586회

다음과 같이 api를 호출하여 dataframe 형식으로 저장하는 함수를 작성했습니다.
return 받은 df 값을 다른 곳에 저장하여 다른 함수를 생성할 때 그 안에서 쓰고 싶습니다.
어떠한 방법이 있을까요? (list()를 중복호출 하기 싫어서 새로 생성하는 함수안에서는list()를 쓰지 않으려 합니다)

예를들어 다른함수에서 a함수와 b 함수를 불러와 합치는데 두 함수 모두 list의 df가 필요합니다. 즉, 두함수를 합치려고 불러오는 순간 list()가 중복호출된다는 소리입니다. 그래서 list()의 return값을 다른곳에 저장해 호출하지 않으려 합니다.

def list():
    headers = {
        'Authorization': 'Bearer ' + accesstoken,
        'Id': id,
    }
    r1 = requests.get(url, headers=headers)
    r1_json = r1.json()
    df = pd.DataFrame(data=r1_json['content'])
    return df
  • 예를들어 다른함수에서 a함수와 b 함수를 불러와 합치는데 두 함수 모두 list에 df가 필요합니다. 즉, 두함수를 합치려고 불러오는 순간 list()가 중복호출된다는 소리입니다. 그래서 list()의 return값을 다른곳에 저장해 호출하지 않으려 합니다. 설명이 부족해 죄송합니다 알 수 없는 사용자 2020.11.12 11:22

1 답변

    1. list 라는 함수명은 매우 좋지 않습니다.
    2. lru_cache 라는 데코레이터를 쓸 수가 있습니다. 함수의 반환값을 캐싱하여 가지고 있다가, 다음 호출시에 알아서 캐싱해 놓은 값을 반환해 줍니다.
    3. 단 처음 호출시에 requests 가 실패하면, 안 좋군요.
    • lru_cache 말고 df를 받는 함수를 따로 정의해서 써도 무방할까요?? 이렇게 생각하고 진행중이었는데 잘 풀리지가 않네요.. 저장하는 함수를 만들고 읽는 함수를 또 만들어야하는지 .. 알 수 없는 사용자 2020.11.12 17:42

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)