Python/포스팅

파이썬 함수 안에서 선언한 변수의 효력 범위

짜집퍼박사(짜박) 2023. 12. 3. 00:46

파이썬에서 함수 안에서 선언한 변수의 효력 범위(scope)는 해당 변수가 어디서 사용될 수 있는지를 나타냅니다. 파이썬은 변수의 스코프를 결정하는 데에 여러 규칙을 가지고 있습니다.

 

1. 로컬 스코프 (Local Scope)

로컬 스코프는 함수 안에서 선언된 변수가 유효한 범위를 나타냅니다. 함수 내에서 선언된 변수는 해당 함수 내에서만 접근할 수 있습니다.

def my_function():
    x = 10
    print(x)

my_function()
# print(x)  # 오류: 함수 밖에서 x에 접근할 수 없음

위의 예제에서 x는 my_function 함수 안에서 선언되었으므로 함수 내에서만 유효합니다.

 

2. 전역 스코프 (Global Scope)

전역 스코프는 함수 밖에서 선언된 변수의 유효 범위를 나타냅니다. 전역 변수는 프로그램 어디에서나 접근 가능합니다.

y = 20

def my_function():
    print(y)

my_function()
print(y)

위의 예제에서 y는 함수 밖에서 선언되었으므로 전역 변수이며, 함수 내부에서도 접근 가능합니다.

 

3. 렉시컬 스코프 (Lexical Scope)

파이썬은 렉시컬 스코프를 따르며, 이는 코드의 구조와 중첩에 따라 스코프가 결정된다는 것을 의미합니다. 함수 내에서 선언된 변수는 함수 내부뿐만 아니라 중첩된 함수에서도 접근 가능합니다.

def outer_function():
    a = 30

    def inner_function():
        print(a)

    inner_function()

outer_function()
# print(a)  # 오류: outer_function 밖에서 a에 접근할 수 없음

위의 예제에서 a는 outer_function 함수 내에서 선언되었지만, inner_function에서도 접근 가능합니다.

 

4. global 키워드

global 키워드를 사용하면 함수 내에서 전역 변수를 수정할 수 있습니다.

z = 40

def modify_global_variable():
    global z
    z = 50

modify_global_variable()
print(z)  # 출력: 50

위의 예제에서 modify_global_variable 함수 내에서 global z를 사용하여 z를 전역 변수로 지정하고 수정하고 있습니다.

함수에서 선언한 변수의 효력 범위를 이해하면 변수의 유효성과 생명주기를 파악하여 코드를 작성하는 데 도움이 됩니다. 일반적으로 함수 내에서 선언한 변수는 그 함수 내에서만 유효하며, 함수 외부에서는 접근할 수 없습니다.

 

With ChatGPT