[파이썬] 표현식과 문장

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

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^