본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 독학] 데이터 분석 - 함수 만들기 : 변수 적용 범위

by 석세상 2022. 6. 24.
반응형

 

파이썬에서 함수를 만들 때 함수 밖에 있는 변수명과 함수 안에 있는 변수명이 동일하다면 어떻게 적용될까? 

 

 

함수 만들기 - 초기값 설정 오류

test라는 함수명으로 함수를 생성했는데 test(a)로 실행해보니 a가 정의되지 않았다는 에러 메시지가 발생한다. 이와 같은 결과는 앞에서도 다뤘던 부분이니 참고로만 알아두자. 그러면 a가 정의되지 않아 발생한 문제이기 때문에 a의 초기값을 주어지면 문제가 사라질 것이다. 그래서 주석으로 처리해둔 a = 1 부분을 풀어주면 초기값이 설정될 것이다.

함수 실행 시 에러발생

 

 

함수 만들기 - 초기값 설정 및, 함수 내/ 함수 밖의 결과 비교

1번의 맨 처음 부분에 초기값을 주고 함수를 정의하였다. 그리고 2번의 test(a)를 실행해보니 실행결과로 2가 나온 것을 볼 수 있다. 이건 test라는 함수를 실행시켰으니 a = 1이라는 초기값에 a = a + 1이라는 연산을 하여 결괏값이 2가 생성되는 것을 볼 수 있다. 하지만 3번에서의 print(a)의 실행결과를 보면 1이 출력되는 것을 알 수 있다. 이렇게 같은 a라는 변수의 값이 다르게 산출된다는 것은 어떤 것을 의미하는 것일까?

 

그건 우리가 눈으로 보기에는 a라는 변수명으로 동일하지만 함수 내의 변수와 함수 밖의 변수는 다른 변수로 취급한다는 것을 알 수 있다. 그러므로 두 변수는 동명이인이 다른 사람이라고 생각하는 게 이해하는데 도움이 될 것이다.

함수 내/ 함수 밖의 결과 차이

 

 

return 명령어를 이용하여 a라는 결과를 실행했지만 외부에 있는 변수를 직접 가져와서 사용한다는 의미의 global이라는 명령어가 있지만 모든 곳에서 적용된다는 전역 변수로 사용하게 되므로 실제로는 잘 사용하지 않게 된다. 왜냐하면 내가 중간에 생성한 변수가 혹시라도 동일한 이름이 있다면 이번에 코딩하는 게 적용되었으면 하는데 전에 설정해 둔 전역 변수의 값이 들어와 생각과는 전혀 다른 결과를 생성할 수 있기 때문이다.

 

 

728x90
반응형

댓글