I. 즉시 실행해서 결과 확인
가. 연속적 변수 할당
- [예제] 다수 개의 변수를 연속으로 할당
a = b = c = 10 print(a + b + c) [결과] 30
나. 문자열로 작성된 표현식과 문장 실행
- eval(): 문자열 내 표현식을 실행하는 내장 함수
- [예제] 문자열 내 표현식을 실행
a = "10 + 10" result = eval(a) print(result) [결과] 20
- exec(): 문자열로 만들어진 문장을 실행하는 내장 함수
- [예제] 문자열로 만들어진 문장을 실행
s = """ def add_(x, y) : return x + y """ exec(s) // 함수가 정의된 문자열 실행 result = add_(10, 20) print(result) [결과] 30
- 따옴표 세 개를 사용해서 여러줄로 문자를 작성할 수 있다.
- 문자열이 정의되면 문자열을 함수 exec에 인자로 전달해서 실행하여 모듈 내 add_ 변수에 함수 객체로 할당
II. 특정 객체를 만든 후 실행
- 특정 표현식이 실행되면 결괏값이 바로 반환되지 않고, 이 값을 호출할 수 있는 값을 반환하는 객체를 핸들러(handler)라고 한다.
가. 지연 평가
- 핸들러는 필요한 시점에 실행해서 결과를 반환하도록 하며, 이런 방식을 지연 평가(Lazy Evaluation)이라고 한다.
- 파이썬은 동적 객체를 만드는 반복자(Iterator)인 경우 핸들러 객체를 반환한다.
- [예제] range 함수를 이용한 지연 평가
r = range(5) // range 클래스로 객체를 만들어 변수에 할당 for i in r : // 원소를 하나씩 꺼내어 처리 print(i) [결과] 0 1 2 3 4
III. 문자열에 수식을 포함하여 계산
- [예제] 문자열에 변수를 포함하여 계산
x = 100 y = "2 * x + 10" result = eval(y) print(result) [결과] 210
- [예제] 할당되지 않은 변수를 포함하여 계산
x = 200 z = "y = 2 * x + 10" exec(z) print(y) [결과] 410
[참고]
- 잇플, “한 권으로 개발자가 원하던 파이썬 심화 A to Z”, 2019.11