본문 바로가기
프로그래밍

프로그래밍 「 추천 편」Python의 글로벌 VS 비로컬

by grapedoukan 2023. 6. 4.
728x90

Python 함수로 작업할 때 및 . 이 두 키워드는 Python에서 변수의 범위를 정의하는 데 사용됩니다. 여기에서는 전역 변수와 비지역 변수의 차이점, 사용 방법 및 사용 시기를 살펴보겠습니다.globalnonlocal

전역 변수

전역 변수는 함수 외부에서 정의되고 코드의 어느 곳에서나 액세스할 수 있는 변수입니다. 함수 내에서 전역 변수를 정의하려면 키워드 뒤에 변수 이름을 사용합니다.global

x = 10

def my_function():
    global x
    x = 5
    print("Inside the function, x is:", x)

my_function()
print("Outside the function, x is:", x)

# Inside the function, x is: 5
# Outside the function, x is: 5

이 예에서는 값이 10인 전역 변수를 정의했습니다. 그런 다음 키워드를 사용하여 값을 5로 변경하는 함수를 정의했습니다.xmy_functionxglobal

함수를 호출하고 함수 내부와 외부의 값을 모두 출력하면 함수 내부의 변경 사항이 함수 외부에 반영되는 것을 볼 수 있습니다. 기본적으로 키워드를 사용할 때 "전역 변수를 사용하고 싶습니다"라고 말하는 것입니다.xglobal

전역 변수는 코드의 여러 부분 간에 데이터를 공유해야 할 때 유용할 수 있습니다. 그러나 전역 변수를 과도하게 사용하면 코드를 이해하고 유지 관리하기가 더 어려워질 수 있습니다.

비지역 변수

비지역 변수는 바깥쪽 함수에 정의되고 중첩된 함수에서 액세스할 수 있는 변수입니다. 비지역 변수를 정의하려면 키워드 뒤에 변수 이름을 사용합니다.nonlocal

def outer_function():
    x = 10

def inner_function():
    nonlocal x
    x = 5
    print("Inside the function, x is:", x)

inner_function()
print("Outside the function, x is:", x)
outer_function()

# Inside the function, x is: 5
# Outside the function, x is: 5

이 예제에서는 외부 함수에서 비지역 변수를 정의하고 내부 함수에서 사용했습니다. 키워드를 사용하여 값을 5로 변경했습니다. 외부 함수를 호출하고 내부 함수 내부와 외부의 값을 출력하면 내부 함수 내부의 변경 사항이 내부 함수 외부에 반영되는 것을 볼 수 있습니다.xxnonlocalx

비지역 변수는 중첩 함수에서 변수를 수정하고 바깥쪽 함수에 변경 사항을 반영해야 하는 경우에 유용합니다. 그러나 지역이 아닌 변수를 과도하게 사용하면 코드를 이해하고 유지 관리하기가 더 어려워질 수 있습니다.

결론

코드의 여러 부분 간에 데이터를 공유해야 하는 경우 전역 변수를 사용하되 과도하게 사용하지 않도록 주의해야 합니다.

중첩 함수에서 변수를 수정하고 바깥쪽 함수에 변경 사항을 반영해야 하는 경우 비로컬 변수를 사용하되 과도하게 사용하지 않도록 주의해야 합니다.

일반적으로 가능한 한 전역 변수와 비 지역 변수를 모두 사용하지 않는 것이 가장 좋습니다. 대신 변수를 함수에 인수로 전달하고 함수에서 값을 반환하는 것이 좋습니다. 전역 변수와 비지역 변수 모두 용도가 있지만 코드를 깨끗하고 유지 관리하기 쉽게 유지하려면 가능한 한 많이 사용하지 않는 것이 가장 좋습니다.

728x90