본문 바로가기

python 시작하기

[pythone] 전역변수와 지역변수

728x90
반응형

이번 포스팅에서는 변수와 저번 과제에서 활용한 재귀함수에 대해서 알아보겠습니다.

변수는 전역변수와 지역변수가 있습니다.

  • 전역변수: 프로그램 전체에서 사용되는 변수
  • 지역변수: 한정된 지역(ex.함수)에서만 사용되는 변수

전역변수는 함수, 클래스 외부에 선언하여 사용되며. 파일 전체에 영향을 줍니다. 또 프로그램이 종료되면 메모이에 소멸됩니다.
파일 전체에 영향을 주는 만큼 코드의 어디서든 접근 할 수있지만 코드의 다른 부분이 전역 변수에 접급해 값을 변경할 수 있어 복잡성이 증가할 수 있습니다.

 

우리가 지금까지 함수 제외하고 선언했던 모든 변수들이 전역변수 해당합니다.

 

지역변수는 전역변수와 반대로 함수나 클래스 내부에서 선언하는 변수를 말합니다. 

 

글로도 충분히 이해되시는 분들도 계시겠지만, 저의 포스팅 스타일은 항상 눈으로 확인해야 합니다.

위 코드처럼 짠 후에 a를 출력할경우 무엇이 나올까요? 1 or 11?

정답은: 1입니다.

그럼 만약 우리가 11을 원하면 무엇을 해야 할까요?

네 다음과 같이 함수를 호출해 주셔야 그 안에 있는 지역변수를 불러올 수 있는겁니다.

 

근데 여기서 그럼 전역변수를 선언하면 함수내에서도 변경하고 쓸수 있으니까 좋은거 아냐? 라고 생각하실 수 있습니다.

하지만 
NOPE!!! 전역변수는 함수내에서 특정 처리없이는 임의로 변경이 불가능합니다.

확인해봅시다.

위 코드를 사용해보세요 함수를 호출하면 아래와 같은 오류가 뜹니다.

이 오류는 지역변수에 a값이 할당되지 않았다는 뜻입니다.

위 같은 문제가 존재하기에 전역변수로 선언되었다고 해서 함수나 클래스에서 변수 설정을 빠뜨려서는 안됩니다.

근데 여기서 잠깐! 제가 특정처리 과정이 있으면 전역변수도 지역변수로 불러올 수있다고 했죠? 그것을 알아 봅시다.

그것을 바로 단어만 들어도 전 구역을 말하는 것같은 global함수 입니다.

물론 알려는 드리지만, 나중에 코드가 복잡해지면 매우 머리가 어지러워 질 테니 지역변수로 최대한 활용하는게 좋습니다.

:D

 

그럼 이제 변수에 대해서 다 배운것이냐?

아니죠 제가 여태 계속 포스팅해오면서 뭔가 변수에 명칭을 붙인게 하니 있지 않았나요?

맞습니다!!!! 매개변수가 남아있죠

매개변수란 지역변수도 input이 필요한 변수가 있을때 쓰는 변수로 함수를 선언할 때 같이 선언됩니다. 그럼 간단하게,

pr_str함수를 선언하고 pr_str("codingon",3)을 출력해 봅시다.

(힌트: for문을 사용하세요)

 

주의! 함수 매개변수와 호출 변수의 인덱스 위치가 동일해야 합니다!!!

 

추가로 가변변수라는 것이 존재하지만, 잘 사용되지 않으니 확인만 하고 넘어가겠습니다.

잘 사용하지 않을뿐 사용성은 사람에 따라 다르니 이 변수까지 꼭 확인하고 넘아 가시길 바랍니다.

 

가변 위치 매개변수란?

  • 가변 위치 매개변수로, 매개변수의 개수가 가변적일때 사용
  • 식별자 앞에 *을 표시하면 관례상 *args식별자를 사용
  • 모든 위치 매개변수를 튜플 형태로 묶어 사용

 

가변 키워드 매개변수란?

  • 가변 키워드 매개변수로, 키워드 개수가 가변적일때 사용
  • 식별자앞에 **을 표시하며 관례상 **kwargs 식졀자를 사용
  • 모든 키원드 매개변수를 딕셔너리 형태록 묶어서 사용

 

어때요 눈에 확들어오는 내용이라 어렵지 않죠?

만약에 여러분들이 *args와 **kwargs를 함께 사용할시에는 반드시 반드시 *args가 앞에오도록 하셔야 합니다.

변수는 간략하게 설명한다는게 그만 주저리주저리 하다 보니 많이 길어졌네요;;;;

재귀함수는 다음 포스팅때 같이 공부하도록 하죠  ;)

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형

'python 시작하기' 카테고리의 다른 글

python 객체지향 프로그래밍  (0) 2024.12.02
python 재귀함수와 lamda함수  (1) 2024.11.30
Python Def 함수선언  (2) 2024.11.29
Python 조건문과 반복문 (2)  (2) 2024.11.28
Python 조건문과 반복문  (1) 2024.11.27