Python - 문제 미리보기
문제 2066
medium
다음 코드의 실행 결과는?
```python
x = 500
def my_function():
x = 200
print("함수 내부:", x)
my_function()
print("함수 외부:", x)
```
정답: B
동일 이름 변수의 스코프 분리:
변수 이름 충돌 시 Python 규칙:
⦁ 지역 변수 우선: 함수 내부에서는 지역 변수가 전역 변수보다 우선
⦁ 독립적 존재: 같은 이름이어도 서로 다른 메모리 공간에 저장
⦁ 스코프별 관리: 각 스코프에서 별도로 관리됨
변수 탐색 순서 (LEGB Rule):
1. Local: 현재 함수의 지역 스코프
2. Enclosing: 상위 함수의 스코프 (중첩 함수)
3. Global: 전역 스코프
4. Built-in: 내장 스코프
코드 실행 과정:
1. 전역 변수 정의:
```python
x = 500 # 전역 스코프의 x
```
2. 함수 정의 및 호출:
```python
def my_function():
x = 200 # 지역 스코프의 x (전역 x와 별개)
print("함수 내부:", x) # 지역 x 참조 → 200
```
3. 함수 실행:
⦁ `my_function()` 호출
⦁ 함수 내부에서 `x = 200` → 새로운 지역 변수 생성
⦁ `print("함수 내부:", x)` → 지역 변수 x 참조 → "함수 내부: 200" 출력
4. 함수 외부 실행:
```python
print("함수 외부:", x) # 전역 x 참조 → 500
```
⦁ 전역 스코프에서 x 참조 → "함수 외부: 500" 출력
💡 학습 팁
이 문제를 포함한 Python 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.