python 메모

[python] eval() 내장함수

2021. 8. 29. 23:02
목차
  1. 1. eval()
  2. 2. 문자열 입력

python 예약어 중 eval이라는 예약어가 있다(무엇에 쓰는 물건인고?). 무엇인지, 언제 쓰는지 알아보자.

 

1. eval()

python3 문서에서는 eval()에 대해 다음과 같이 설명하고 있다.

eval(expression[, globals[, locals]]) 
...
인자는 '문자열 및 선택적 globals 및 locals'다. (...)
반환 값은 계산된 표현식의 결과입니다.

즉 문자열이나 표현식, 변수들을 입력으로 받아 이를 계산하고 반환해주는 함수이다. 단, 문자열, 표현식, 변수들이 모두 str 타입이어야 한다.

 

아래는 간단한 예제이다.

x = 1
eval('x+1')
>>>> 2

 

 

2. 문자열 입력

requests 등으로 json, list 등의 데이터를 받는 경우 문자열로 받아지는 경우들이 많다. upbit api로 비트코인의 분봉 데이터를 요청해서 받으면 아래와 같이 나온다.

import requests

url = 'https://api.upbit.com/v1/candles/minutes/1?market=KRW-BTC&count=1000&to=2021-07-01T12:24:00Z'

response = requests.get(url)
response.text
>>>> '[{"market":"KRW-BTC","candle_date_time_utc":"2021-07-01T12:23:00", ....},
	   {"market":"KRW-BTC","candle_date_time_utc":"2021-07-01T12:22:00", ....},
	    ....
	   {"market":"KRW-BTC","candle_date_time_utc":"2021-07-01T12:10:00", ....}]'
       
type(response.text)
>>>> str

잘 모르는 상태에서 보면 'string 데이터를 파싱하면 되겠네'라는 생각이 들 것이다. 하지만 이내 불가능 하다는 것을 깨닫게 되고 모든 의욕을 잃는다. 문자열을 바로 list()로 반환하고자 해도 문자열 입력이기 때문에 character 단위로 다 쪼개질 뿐이다.

 

우리가 하고 싶은 것은 '문자열로 표현된 리스트를 리스트 자체로 만드는 것'인데 이럴 경우 eval()을 쓰면 된다. eval()을 사용하면 해당 '표현식'을 입력받아 계산하여 반환해준다고 한다. 한번 해보자.

test = ['a', 1, 2, '34']
test = str(test)
test
>>>> "['a', 1, 2, '34']"

eval(test)
>>>> ['a', 1, 2, '34']

type(eval(test))
>>>> <class 'list'>

 

 

728x90
저작자표시 비영리 동일조건 (새창열림)

'python 메모' 카테고리의 다른 글

[pandas] warning 메세지 출력 안하기  (0) 2021.11.19
[sklearn] classification_report 결과 파일로 저장하기  (0) 2021.09.02
[python] requests 라이브러리 한글 인코딩  (0) 2021.07.27
[pandas] apply + custom function을 사용한 다중 입력 및 출력  (0) 2021.06.10
[python] datetime 사용하기  (0) 2021.06.06
  1. 1. eval()
  2. 2. 문자열 입력
'python 메모' 카테고리의 다른 글
  • [pandas] warning 메세지 출력 안하기
  • [sklearn] classification_report 결과 파일로 저장하기
  • [python] requests 라이브러리 한글 인코딩
  • [pandas] apply + custom function을 사용한 다중 입력 및 출력
Fine애플
Fine애플
이것저것
끄적끄적이것저것
Fine애플
끄적끄적
Fine애플
전체
오늘
어제
  • 분류 전체보기 (167)
    • 논문 및 개념 정리 (27)
    • Pattern Recognition (8)
    • 개발 (57)
    • python 메모 (45)
    • pytorch, tensorflow (5)
    • 알고리즘 (9)
    • Toy Projects (4)
    • 통계이론 (2)
    • Reinforcement Learning (10)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 자연어
  • ubuntu
  • transformer
  • miniconda
  • PyTorch
  • reinforcement learning
  • Bert
  • container
  • GPU
  • Docker
  • 딥러닝
  • 개발환경
  • 언어모델
  • Probability
  • 알고리즘
  • BigBird
  • nlp
  • pandas
  • tensorflow
  • python

최근 댓글

최근 글

hELLO · Designed By 정상우.
Fine애플
[python] eval() 내장함수
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.