파이썬/파이썬(python) 초급

[12-2 파이썬] 전역 변수 수정하기, global, 전역 상수

Olivia-BlackCherry 2022. 8. 20. 20:51

global + 전역변수 

오늘은 지난 시간에 이어

전역 변수를 지역 변수로 가져와

해당 값을 수정하는 방법에 대해 알아보자.

 

아래의 코드를 보면 

my_pond() 함수 밖에

전역 변수로 fish가 선언되어 있고 

 

my_pond() 함수 안에 

지역 변수로 fish가 있는데 

fish = fish +1로 정의되어 있다. 

그런데 여기 지역 변수에서는 

fish의 초기값이 선언되어 있지 않아 에러가 난 상황이다.

에러를 읽어보면, 

local variable fish referenced before assignment

지역 변수 fish가 값을 할당받기 전에 언급되었다는 에러이다. 

 

이 에러를 해결하기 위해서는

전역변수인 fish를 가져와 지역 범위에서 활용하면 된다.

 

이를 위해서는 지역 범위에서 전역 변수를 가지고 있다고 명시해야 하는데

이때

global과 함께 전역 변수를 적어주면 된다. 

global fish

 

 

결과적으로 

my_pond() 함수 안에서

fish = 1000  <---- 전역변수에서 초기값 가져옴

fish = fish + 1

을 수행하게 되어

 

함수 안에 있는 물고기의 숫자는 1001이라는 값을 갖게 되고,

함수 밖에 있는 물고기의 숫자, 즉 전역변수 값도 수정이 되어 1001이라는 값을 갖게 된다!

 

 

 

 

return으로 전역 변수 값 수정하기

추가로 언급하자면,

지역 범위를 가진 함수 내부에서는 전역 변수를 수정하지 않는 것을 추천한다.

중간에 실수할 가능성이 높아져서....

많은 버그를 유발할 수 있다...

 

대신 return 기능을 통해 전역 변수를 수정해보자.

my_pond() 함수에 return 값으로 fish +1을 두었다.

 

함수를 실행해보자.

my_pond() 자리에 fish +1이 반환되므로 

fish = fish +1이 새롭게 정의되며

전역 변수 fish의 값이 새롭게 할당된다.

코드를 해석하는 입장에서도 더욱 한눈에 들어온다.

 

 

전역 상수 global constant

constant는 상수를 뜻한다.

상수는 '변수에 대하여 항상 일정한 값을 취하는 양'을 뜻한다. 

 

전역 상수는 앞으로 값을 변경하지 않을 변수이다.

 

파이썬은 이런 전역사수를 정의할 때 

다른 변수와 구분하기 위해

모두 대문자로 쓴다는 규칙을 갖는다.

 

예) PI =3.14159
     URL = "olivia-blackcherry.tistory.com"
     INSTAGRAM = "@olivia_black_cherry"