• 2020. 6. 30.

    by. 윈썸지니

    반응형

    출처 : pixabay

    파이썬 함수에 관한 포스팅을 연재하다가 갑자기 변수 내용을 다루니 갑작스러울 수 있을 것입니다.

     

    지역변수를 설명하기 위해서는 함수를 알아야 합니다.

    함수를 공부하였으니 지역변수와 전역변수에 대해 알아봅니다.

     

    전역변수 (global variable) : 프로그램 어디서든 사용 할 수 있습니다.
    지역변수 ( local variable) : 함수내에서만 사용 합니다.

     

    지역변수 사용법

     

    지역변수는 함수내에만 사용되는 변수로 함수내에서 사용하면 됩니다.  

    특별히 local  뭐 이렇게 선언하지는 않습니다.

    아래 예제를 통해 지역 변수 사용 범위를 구분해 봅니다.

    ## 간단히 1을 더해 주는 함수를 정의 합니다.
    >>> def test( x ) :
         x = x + 1 
         print(x)
         return x

    ## 함수 밖에서 x 를 출력하려고 했으나  x 는 정의 되지 않았다고 오류가 발생합니다.
    >>> test(3)
    4
    4
    >>> print( x)
    Traceback (most recent call last):
      File "<pyshell#83>", line 1, in <module>
        print( x)
    NameError: name 'x' is not defined
    >>> 

    위의 예제에서 x test() 함수에서만 사용 가능하고  함수 밖에서는 사용 할 수 없습니다.

    함수내에서 사용되는 변수는 자동적으로 지역변수로 동작합니다.

     

    아래 예제는 x를 먼저 선언하고  함수를 정의 합니다.

    또 함수를 실행하고 x를 출력해 봅니다.

    >>> x = 10               ## 1번
    >>> def test( x ) :
         x = x + 1              ## 2번
         return x

    >>> test(4)
    5
    >>> print(x)          ## 3번
    10
    >>> 

    위의 예제에서 같은 x  라는 변수 이지만 1번과 2번은 다른 x 입니다.

    함수안의 변수는 함수안에서만 영향을 미치기 때문입니다.

     

    만약 변수명이 같아서 함수안에서도 영향을 미친다면 3x11이 되어야 합니다.

    하지만 3번은 1번의 값을 그대로 가지고 있습니다.

    이렇게 사용되는 것이 지역변수 입니다.

     

    전역변수 사용법

     

    전역변수는 프로그램 어디서든 불러서 사용 할 수 있다고 했습니다.

    전역변수를 global 이라고 변수 명 앞에 붙여 줍니다.

     

    아래 예제를 통해 알아봅니다.

    하나의 함수안에는 global 선언을 하지 않고 즉 지역변수 입니다.

    다른 함수는 global 선언을 하였습니다.

    >>> global x             ## global은 선언해도 되고 안 해도 됩니다.  저는 가독성을 위해 선언합니다.
    >>> x = 10
    >>> def test( y ) :
         x =  y + 1            ## x는 지역 변수 입니다.
         return x

    >>> test(3)
    4
    >>> print(x)
    10                           ## 위의 x는 지역변수 이므로 영향을 받지 않습니다.
    >>> 
    >>> def test( y ) :
         global x               ## x는 전역변수 입니다. 함수내에서도 global이라고 선언해야 합니다.
         x =  y + 1 
         return x

    >>> test(3)
    4
    >>> print(x)
                                  ## 함수 안에서 영향을 받아서 결과 값이 4 입니다.
    >>> 

    주의 할 것은 C 언어에서는 global 을 위에서 한번 선언하면 함수 내에서도 자동으로 global 변수로 적용되지만

    파이썬에서는 함수 내에서 global  선언을 또 하지 않으면 그냥 지역 변수도 동작을 합니다.

     

    저는 이것 때문에 좀 많은 시간을 허비하고 다른 방법으로 코딩한 기억이 있습니다.

    global을 많이 사용하는 것은 프로그램 가독성이  떨어지고 함수 고유의 기능을 떨어지게 하므로 좋지 않은 방법이긴 하나, 꼭 필요할 경우가 있으므로 존재하는 것입니다.

    전역변수는 꼭 필요한 경우만 사용하세요.

     

    이상으로 지역변수와 전역변수에 대해 알아 보았습니다.

    반응형