본문 바로가기
프로그래밍/Python

[Python]global 변수 선언하기

by Mr.noobiest 2023. 5. 25.

python코드가 너무 길어지면 코드 관리하기도 힘들고, 에러가 발생하면 추적하기 힘들다,

 

보통은 함수를 사용하고  여기서 나아가면 .py를 새로  만들어서 import로 새로 생성한 라이브러리를 불러와서 처리하기도 한다.

잘만하면 아주 간결하게 코드를 만들 수 있고, 후임에게 전달할때도 쉽게 전달이 가능하다.

하지만 이렇게 하다보면  정말 많은 함수들이 생성되고, 함수에 상관없이 session처럼 사용자가  항상  들고다니는  변수가 있을 수있다.

 

이럴때 사용하는 것이 global 변수 == 전역 변수 이다.

전역변수

"global 변수명"으로 설정하는 전역 변수를 함수에  상관없이 코드자체에서 항상 들고 다니는 변수라고 생각하면 된다.

원래 함수 안에서 지정된  변수는 return없이는 함수 밖에서 쓸수없다. NameError가 발생할 것이다.

#실행
def test():

    a="이것은 지역변수입니다"
    return a


print(test())
print(a)
#결과

 

하지만 함수랑 상관없이 코드를 사용할동안 항상 들고다니는 변수가  필요할때도 있을것이다. 그럴때 global을 사용하는것이다.

#실행
def test():
    global a
    a = 3
    b = 2
 
    return a + b
 
print(test())
print(a)
#결과
5
3

이렇게 함수 안에서 global a로 지정하면, 굳이 return으로 함수 밖으로 빼지않아도 a를 알 수 있다.

이때,  함수밖에서도 global로  지정을 해줘야 하고, 함수내에도 global지정을 해주어야만 한다.

 

 

좀더 상세하게 설명하자면, global "변수" -> "global_변수"라는 특이한 이름의 변수가 새롭게 생성되었다고 보면된다.

#실행

global_a=''

def test():
    
    a = 3
    global_a=a
    b = 2
 
    return a + b,global_a
 
a=test()[1]
print(test()[0])
print(a)
#출력
5
3

 

session이 저장되지 않을경우 아래처럼 전역변수로 설정해도 된다.

단, 함수내에서 global 변수를 사용하기 전에 global지정을 먼저 해줘야 한다.  안그려면  아래와 같은  에러가  발생한다.

 

#실행
global a

def test():   
    a = 3
    global a
    b = 2
    return a + b

print(test())
print(a)

 

 

끝.

728x90
반응형