파이썬 전역변수와 지역변수
함수 내에서 정의되어 함수가 실행되는 동안 존재, 호출되는 변수를 지역변수(Local Variable)라고 하며, 이는 그 변수가 속한 함수 외부에서는 참조할 수 없다. 반면, 전역에 정의되어 함수 내외부에서 참조할 수 있는 변수를 전역변수(Global Variable)라고 한다. 하지만, 전역변수는 함수 안에서 읽기는 가능하지만, 수정은 불가하다.
특징 | 전역변수 | 지역변수 |
---|---|---|
함수 안에서 읽기 | 가능 | 가능 |
함수 안에서 수정 | 불가 | 가능 |
함수 밖에서 읽기 | 가능 | 불가 |
함수 밖에서 수정 | 가능 | 가능 |
전역변수와 지역변수
count = 1
def count_add_by(num):
added_count = count + num
return added_count
print(count_add_by(5))
print(count)
print(added_count)
위의 코드 실행의 결과값은 아래와 같다. 전역에 선언된 count
는 함수내에서 읽기가 가능하기 때문에 count_add_by(5)
함수의 실행결과는 6이며, 함수가 실행되었지만 전역변수 count
가 수정되지는 않았으므로, count
는 여전히 1 이다. 반면, added_count
는 함수 내에서 선언된 지역변수로, 함수 내부에서만 유효하다. 따라서 함수 외부에서 호출한 결과 undefined
에러가 발생한다.
6
1
Error: Undefined variable 'added_count'
global 문을 사용하여 함수 내에서 전역변수 수정하기
함수 내에서 전역변수를 수정할 수 없지만, 필요 시 global 문
을 사용하면 함수 내에서도 전역변수 수정이 가능하다.
아래 코드와 같이 함수 내에서 global 변수이름
을 선언하면 된다.
count = 1 # 전역변수
def count_add_by(num):
global count
count = count + num
return count
print(count_add_by(5))
print(count)
함수 내에서 전역변수 count
를 수정하였으므로, 함수 실행 후 count
는 6이 된다.
6
6
하지만, global 문
은 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다.
global 문을 사용하지 않고 전역변수 수정하기
global 문
을 사용하지 않더라도 함수의 매개변수와 반환값을 이용하여 전역변수를 수정할 수 있다.
count = 1 # 전역변수
def count_add_by(count, num):
print(count)
count = count + num
return count
count = count_add_by(count, 5)
print(count)
전역변수의 count
를 함수의 매개변수로 전달하고, 반환값을 전역변수 count
에 대입해주면 간접적으로 전역변수를 수정할 수 있다.
1
6
👩🏻💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻♀️
in the process of becoming the best version of myself