Python

[Python] 전역/지역 변수와 범위

비번변경 2022. 10. 1. 01:53

전역 변수와 지역변수

전역 변수(global variable)

함수를 포함해 스크립트 전체에서 접근할 수 있는 변수.

전역 변수에 접근할 수 있는 범위를 전역 변수(global scope)라고 한다.

x = 10  # 전역 변수

def foo():
    print(x)  # 전역 변수 출력

foo()
print(x)  # 전역 변수 출력

전역 변수

 

지역 변수(local variable)

변수를 선언한 블록 내에서만 접근할 수 있는 변수.

지역 변수를 접근할 수 있는 범위를 지역 범위(local scope)라고 한다.

def foo():
    x = 10  # 지역 변수
    print(x)  # 지역 변수 출력

foo()
print(x)  # 지역 변수 출력

지역 변수

foo() 밖에서 변수 x에 접근하려고 하면 오류가 발생한다.

 

 

 

global 키워드

전역 변수가 있을 때 함수 안에서 그 전역 변수의 값을 변경하려고 아래와 같은 코드를 실행했다. 의도대로 동작할까?

x = 10  # 전역 변수

def foo():
    x = 20
    print(x)

foo()
print(x)

non global

이름이 동일한 탓에 foo 내의 x가 전역 변수를 사용하는 것처럼 보이지만, 실제로는 foo 함수 안에서 값이 20인 지역변수 x를 선언한 것이다. 두 변수는 다른 변수이다.

함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 사용해야 한다.

x = 10  # 전역 변수

def foo():
    global x
    x = 20
    print(x)

foo()
print(x)  # 지역 변수 출력

global 키워드

전역 변수가 없을 때 함수 안에서 global 키워드를 사용하면 전역 변수를 선언하는 것과 같다.

def foo():
    global x
    x = 20
    print(x)

foo()
print(x)  # 지역 변수 출력

 

 

참고 문서

https://dojang.io/mod/page/view.php?id=2364