-
반응형
파이썬 함수에 관한 포스팅을 연재하다가 갑자기 변수 내용을 다루니 갑작스러울 수 있을 것입니다.
지역변수를 설명하기 위해서는 함수를 알아야 합니다.
함수를 공부하였으니 지역변수와 전역변수에 대해 알아봅니다.
전역변수 (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 입니다.
함수안의 변수는 함수안에서만 영향을 미치기 때문입니다.
만약 변수명이 같아서 함수안에서도 영향을 미친다면 3번 x는 11이 되어야 합니다.
하지만 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을 많이 사용하는 것은 프로그램 가독성이 떨어지고 함수 고유의 기능을 떨어지게 하므로 좋지 않은 방법이긴 하나, 꼭 필요할 경우가 있으므로 존재하는 것입니다.
전역변수는 꼭 필요한 경우만 사용하세요.
이상으로 지역변수와 전역변수에 대해 알아 보았습니다.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬(Python) 명령행 인자 전달 방법 – sys (0) 2020.07.02 파이썬 함수 인자 전달시 변경되는 객체 – 리스트 등 (0) 2020.07.01 파이썬 함수 딕셔너리 (키워드 가변길이 ) 인자 전달 방법 (0) 2020.06.29 파이썬 함수 여러개 리턴하기 (0) 2020.06.29 파이썬 함수 매개변수 만들기 – 가변 및 디폴트값 설정 (0) 2020.06.28