그런데 함수 내부에서 전역변수의 값을 변경해야 하는 경우가 있습니다. 이때는 함수 내부에서 전역변수를 사용하겠다고 global을 붙여 명시하면 값을 변경할 수 있습니다.
def func1():
global a, b
a += 2
b *= 2
print(a, b)
a, b = 5, 10
func1()
실행결과
7 20
오류 없이 실행됩니다. 결과를 보면 a는 2만큼 증가하고, b는 2배가 됐습니다. 전역변수의 값을 함수 내부에서 변경하는 데 성공했다는 의미죠.
TIP 함수 내부에서 전역변수의 값을 변경하는 대표적인 경우는 공통 데이터에 접근해야 할 때입니다. 마트에서 물건을 들여오고, 판매하는 과정을 생각해 봅시다. 물건 개수를 변수 count에 저장한다고 하겠습니다. 재고를 파악하는 함수는 inventory()이며, 물건을 들여오면 함수 내부에서 물건 개수인 count를 증가시킵니다. 판매하는 함수는 sold()이고, 물건이 팔릴 때마다 팔린 개수만큼 물건 개수인 count를 감소시킵니다. count는 inventory()와 sold() 모두 수정할 수 있어야 합니다. 이 경우 count를 전역변수로 사용하고 두 함수 내부에서는 global 키워드를 사용하여 count 값을 변경하면 됩니다.