[PY] 글로 벌

try-except는 현업에서만 쓴다라고 할 수 있을 정도로 논하듯 global [var name]도 코딩 테스트에서나 쓰이는 코드 중 하나이다.

갑자기 떠올라서 조금 뒤져본건데, 어쨌든 전역변수에 대한 함수 내 처리 방식이 직관적 이해가 안되는 경우가 정말 간혹 안되는경우가 많아 정리하려고 한다.

계기

탑 다운 방식 피보나치 함수는 이렇게 생겼다.

def fib(n, memo={}):
    if n not in memo:
        if n <= 1:
            memo[n] = n
        else:
            memo[n] = fib(n-1, memo) + fib(n-2, memo)
    return memo[n]

print(fib(10))  # memo가 함수 내부에 존재

멋있다. 근데 memo를 꼭 여기다 때려야하나? 라는 생각을 했다. 그래서 이런 질문을 했다.

memo를 반드시 매개변수로 지정해야합니까? global로 memo를 정의하는 것과 다릅니까?

파일럿 코 : 예 global 괜찮은데, 그걸론 앱 만들지 마세요

total = 0

def a():
    global total  # 전역 변수 total을 참조
    total = 10

a()
print(total)  # 출력: 10

global 을 사용하면 전역변수를 직접 수정 할 수 있다.

def a(total):
    total = 10
    return total

total = 0
total = a(total)
print(total)  # 출력: 10

매개 변수로 전달하는 경우에는 return 문을 통한 지정된 값 정정이 아니라면 다소 어렵다.

사소하지만 나중에 이런데서 막히면 현타오니까 점검 겸 적었다.

'컴퓨터 이론' 카테고리의 다른 글

[C, C++] 포인터  (0) 2025.04.04
Greedy  (0) 2025.04.04
플로이드 워셜  (0) 2025.04.03
D P  (0) 2025.04.03
다익스트라  (0) 2025.04.03