본문 바로가기
SW.AI 트랙/python

[Python] 파이썬, 지역변수와 전역변수

by AI 봇 2023. 5. 25.

지역변수 : 함수 내에서만 쓸 수 있는 함수. 함수를 호출할 때 만들어 졌다가 함수가 끝나면 사라지는 함수

전역변수 : 프로그램 전체에서 호출해서 사용할 수 있는 함수

 

예) 군대에서 경기근무를 위해 군인에게 총기를 나눠주는 경우

 

 

1

# 지역변수, 전역변수

gun = 10

def checkpoint(soldiers) :  # 경계근무 나간 군인
    gun = gun - soldiers
    print("[함수 내] 남은 총의 갯 수 : {0}".format(gun))

print("전체 총 : {0}".format(gun))   
checkpoint(2) # 2명의 군인이 경계근무를 나갔음
print("남은 총 : {0}".format(gun))

1

출력 - 에러가 발생함.

전체 총 : 10
    gun = gun - soldiers
          ^^^
UnboundLocalError: cannot access local variable 'gun' where it is not associated with a value

- 값이 지정되지 않은 지역변수 gun 에 접근할 수 없음

- 밑줄 쳐진 변수 gun은 함수 내에서만 만들어진 변수로 밖에 있는 gun과 다름. 변수 초기화가 되어 있지 않음.

 

2

# 지역변수, 전역변수

gun = 10

def checkpoint(soldiers) :  # 경계근무 나간 군인
    gun = 20
    gun = gun - soldiers
    print("[함수 내] 남은 총의 갯 수 : {0}".format(gun))

print("전체 총 : {0}".format(gun))   
checkpoint(2) # 2명의 군인이 경계근무를 나갔음
print("남은 총 : {0}".format(gun))

<출력>

전체 총 : 10
[함수 내] 남은 총의 갯 수 : 18
남은 총 : 10

 

3

# 지역변수, 전역변수

gun = 10

def checkpoint(soldiers) :  # 경계근무 나간 군인
    global gun # 전역공간에 있는 gun 변수를 사용하겠다의 의미
    gun = gun - soldiers
    print("[함수 내] 남은 총의 갯 수 : {0}".format(gun))

print("전체 총 : {0}".format(gun))   
checkpoint(2) # 2명의 군인이 경계근무를 나갔음
print("남은 총 : {0}".format(gun))

<출력>

전체 총 : 10
[함수 내] 남은 총의 갯 수 : 8
남은 총 : 8

 

4. 실제 프로그램에서 지역변수를 잘 사용하지 않고 return 을 활용함.

# 지역변수, 전역변수

gun = 10

def checkpoint(soldiers) :  # 경계근무 나간 군인
    global gun # 전역공간에 있는 gun 변수를 사용하겠다의 의미
    gun = gun - soldiers
    print("[함수 내] 남은 총의 갯 수 : {0}".format(gun))

def checkpoint_ret(gun, soldiers):
    gun = gun - soldiers
    print("[함수 내] 남은 총의 갯 수 : {0}".format(gun))
    return gun
    
print("전체 총 : {0}".format(gun))   
#checkpoint(2) # 2명의 군인이 경계근무를 나갔음
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))

<출력>

전체 총 : 10
[함수 내] 남은 총의 갯 수 : 8
남은 총 : 8