반응형
파이썬에서 '식(Expression)과 문(Statement)의 차이
파이썬에서 ‘문’(statement)과 ‘식’(expression)은 비슷해 보이지만 엄연히 다릅니다. 프로그래밍을 이해하는 데 있어 이 둘의 차이를 아는 것은 매우 중요합니다. 특히 eval() 함수처럼 식만 사용할 수 있는 문맥에서는 그 차이가 결정적인 역할을 합니다.
예제 중심으로 구분해 보기
1. 용어 정의
📌 문(statement)
: 프로그램에서 어떤 동작(행위)를 수행하도록 지시하는 코드 단위입니다. 결과 값을 반환하지 않아도 됩니다.
예: if, for, while, print(), a = 1 등
“행동하라”는 명령에 가까움
📌 식(expression)
: 값을 만들어내는 코드입니다. 항상 어떤 값으로 평가됩니다.
예: 2 + 3, "안녕", len("abc"), a + b 등
“값을 계산하라”는 요청에 가까움
2. 예제 비교
코드 | 문(statement)인가? | 식(expression)인가? | 설명 |
a = 3 | ✅ 문 | ❌ 식 아님 | 값을 변수에 할당함 |
2 + 5 | ❌ 문 아님 | ✅ 식 | 7이라는 값을 만들어냄 |
print("hello") | ✅ 문 | ❌ 식 아님 | 출력이라는 동작을 수행함 |
"hello" + " world" | ❌ 문 아님 | ✅ 식 | 문자열 결합 결과 반환 |
if a > 0: | ✅ 문 | ❌ 식 아님 | 조건에 따라 동작 지시 |
len("abc") | ❌ 문 아님 | ✅ 식 | 결과로 숫자 3 반환 |
3. eval()에서 중요한 차이
eval("2 + 3") # ✅ 가능 → 결과: 5
eval("print('hi')") # ✅ 가능 → 결과: hi (단, 반환값 없음)
eval("a = 1") # ❌ 오류 → 문(statement)이므로 안 됨
- eval()은 반드시 ‘식’만 허용합니다.
- 문은 실행은 되지만 값을 반환하지 않거나, 아예 문법 오류를 냅니다.
4. exec()와의 차이점
eval() | 식(expression)만 | 값을 반환함 |
exec() | 문(statement) 전체 | 값을 반환하지 않음, 여러 줄도 가능 |
exec("a = 5") # ✅ 변수 할당 가능
eval("a = 5") # ❌ 오류 발생
5. 결론
구분 | 문 (Statement) | 식 (Expression) |
의미 | 동작을 수행 | 값을 계산 |
결과 | 값이 없어도 됨 | 반드시 값이 생김 |
예시 | a = 1, if, for | 3 + 5, "hello", len(s) |
eval()에서 사용 가능? | ❌ 불가 | ✅ 가능 |
💡 TIP
파이썬 쉘에서 입력 시 값이 바로 출력되는 경우가 있는데, 이는 ‘식’이기 때문입니다.
반면에 값을 반환하지 않는 문은 아무 출력이 없거나, None이 반환될 수 있습니다.
'실버를 위한 코딩 > 오늘의 파이썬 팁' 카테고리의 다른 글
파이썬 자료형의 특징 (0) | 2025.04.18 |
---|---|
출력 파이썬 코드, print와 pprint (0) | 2025.04.17 |
파이썬의 eval() 함수 제대로 알기 (0) | 2025.04.14 |
os 모듈과 sys 모듈 (1) | 2025.04.14 |
파이썬에서 시스템 명령어 실행하기 (0) | 2025.04.13 |