Q. 다음 조건에 따라 작동하는 프로그램을 작성하세요.
1. 변수 x는 전역 변수로 10을 갖는다.
2. 함수 my_func() 안에서 x를 출력하고, 같은 이름의 변수 x=5를 선언해 다시 출력한다.
3. 함수 호출 후, 전역 변수 x도 출력한다.


하나의 함수 my_func()안에서
전역 변수 x를 출력하고, 같은 이름의 지역 변수 x=5를 선언해 다시 출력하며, 바깥의 전역 x는 영향을 받지 않는것은
불가하다.
( python에서 이것은 허용하지 않는 구조이다.)
따라서, 함수를 my_func(), my_func2() 이렇게 두개 선언하고
my_func2()에서만 지역 변수로 x=5를 선언하였다.
(global x라고 안 썼으니 전역 변수로 x=5가 되지 않는다.)
+) 예를 들어 다음과 같은 코드를 살펴보자.
x = 10
def my_func():
print(x)
x = 5
my_func()
print(x)
함수안에서 x=5가 존재하면, 그 함수 안의 모든 x를 지역 변수로 간주한다.
그러므로 print(x)에서 x는 정의 전 지역 변수로 인식된다.
따라서 위의 코드는 오류이다.
오류를 해결하려면 두가지 방법이 있다
1. 코드의 순서를 바꾸기
x = 10
def my_func():
x = 5
print(x)
my_func() # 출력: 5
print(x) # 출력: 10
2. global x를 명시적으로 나타내기
x = 10
def my_func():
global x
print(x) # 전역 x = 10
x = 5 # 전역 x를 5로 바꿈
my_func() # 출력: 10
print(x) # 출력: 5
+) 변수 선언과, 값 할당은 동시에 불가능하다. (global x=5 ❌)
+) 추가로 궁금한 결과
x=10
def my_func():
global x
print("함수 내 x(전역): ", x)
x=5 # 전역 x=5
print("함수 내 x(지역): ",x)
my_func() # 출력: 함수 내 x(전역): 10
함수 내 x(지역): 5
print("함수 밖 x: ",x) # 출력: 함수 밖 x: 5
Q. 다음 조건에 맞는 프로그램을 작성하세요.
1. 전역 변수 count=0을 선언한다.
2. 함수 increase()를 호출하면 전역변수 count가 1씩 증가한다.
3. increase()를 3번 호출한 뒤 count 값을 출력한다.


- 전역 변수를 수정하려면 함수 안에서 global 키워드가 필요하다.
- c에서는 count++ 라고 쓰는게 가능하지만 python에서는 반드시 count+=1(count=count+1)로 써야한다.
- python에서는 형식지정자 %d같은 것을 사용하지 않아도 된다.
'SWLUG(2025) > Python' 카테고리의 다른 글
| [6주차] 튜플, 딕셔너리 (1) | 2025.08.11 |
|---|---|
| [5주차] 자료형, 문자열, 리스트 (0) | 2025.08.11 |
| [3주차] 함수, 반환문 (0) | 2025.08.11 |
| [2주차] 조건문, 반복문, break&continue (0) | 2025.08.11 |
| [1주차] 데이터 입출력, 변수&데이터 타입 (0) | 2025.08.07 |