[Python] 전역변수, 지역변수

반응형
    반응형

    variable scope(변수 범위)에 대해 알아보겠습니다.

     

     

    전역변수와 지역변수

    함수를 정의하면 그 안에 변수가 있습니다.

    그 변수같은 경우 자신이 속한 코드 블록이 종료되면 소멸됩니다. 이런 특징을 갖는 변수를 지역변수(local variable)이라고 합니다. 반대로 프로그램 종료 전까지 유지되는 변수를 전역변수(global variable)라고 합니다.

     

    num1 = 10
    num2 = 40
    def add(num1,num2):
        print(num1,num2)
    add(30,50)
    print(num1,num2)

    먼저 num1 과 num2 를 각각 10과 40으로 정의했는데 함수 add 안에 num1,num2 를 변수로 선언하고 사용해보겠습니다. 즉, num1= 10, num2 = 40 은 전역변수, add()에서 num1, num2 는 지역변수가 되겠습니다. 보시는것처럼 add(30,50)의 결과로 30 50 이 나왔지만 함수를 벗어나자마자 다시 num1,num2 는 10 40 이 되었습니다. 함수안에서는 지역변수가 실행되지만 함수코드블록이 끝나자마자 다시 전역변수로 돌아서는 것을 볼 수 있습니다. 

    전역변수는 함수안으로 들어가지 않는 걸 알 수 있습니다.


    함수 안에서 전역변수 사용하기

    함수 안에서 전역변수를 쓸수 있게 하려면 어떻게 해야할까요?

    num_count = 0
    def count():
        num_count = num_count+1
        print(num_count)
    count()

    전역변수인 num_count를 함수안에서 실행하려고 했지만 지역변수로 설정하고 함수가 실행되지 않아서 에러가 났습니다.

    이럴 경우, global 을 이용해 해결할 수 있습니다.

    num_count = 0
    def count():
        global num_count
        num_count = num_count+1
        print(num_count)
    count()
    count()
    count()
    num_count

    전역변수 자체가 변경되는 것을 볼 수 있습니다. 하지만, 전역변수를 자꾸 끌어다 쓰게 되면 나중에 헷갈려져서 힘들어질수도 있습니다. 꼭 필요할때만 쓰시기 바랍니다.

    'Python > 기초' 카테고리의 다른 글

    [Python] 간단 용어 정리  (0) 2020.04.14
    [Python] Lambda(람다) 함수  (0) 2020.04.12
    [Python] 함수  (0) 2020.04.07
    [Python] for 반복문  (0) 2020.04.03
    [Python] while 반복문 쓰기  (0) 2020.04.02

    댓글

    Designed by JB FACTORY

    ....