클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

파이썬의 입출력 2 - 함수 2 : 키워드 매개변수와 함수의 여러 가지 특성 본문

프로그래밍 언어/파이썬

파이썬의 입출력 2 - 함수 2 : 키워드 매개변수와 함수의 여러 가지 특성

huenuri 2024. 9. 4. 17:50

이제 오후 공부 시간이 1시간 반밖에 남지 않아서 아쉬움이 든다. 잠을 많이 잤더니 오늘은 오후에 3시간도 공부를 못하는 것 같지만 그래도 이렇게 할 수 있다는 것만으로도 감사하다.
이어서 함수에 대해서 학습해볼 것이다.


 
 
 

키워드 매개변수, kwargs

키워드 매개변수를 사용할 때는 매개변수 앞에 별 2개(**)를 붙인다. 

 
매개변수 이름 앞에 **을 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 Key = Value 형태의 입력값이 그 딕셔너리에 저장된다.

 


 
 
 
 

함수의 리턴값은 언제나 하나이다


 
 
 

 


 

 

 

 


 
 
 

매개변수에 초기값 미리 설정하기

매개변수에 초기값을 미리 설정해주는 경우이다.
 

 
true로 하면 남자가, false로 했을 때는 여자가 출력되고 있다.

 

 


 
 

 

 
파이썬 인터프리터는 27을 매개변수 어느 곳에 대입해야 할지 판단하기 어려운 경우 오류가 발생한다. 이 오류 메시지는 '초기값이 없는 매개변수(age)는 초기값이 있는 매개변수(man) 뒤에 사용할 수 없다'는 뜻이다. 즉 매개변수로(name, age, man=True)는 되지만, (name, man=True, age)는 안된다는 뜻이다.
초기화하고 싶은 매개변수는 항상 뒤쪽에 놓아야 한다.

 


 
 
 
 

함수 안에서 선언한 변수의 효력 범위

함수 안에서 사용할 변수의 이름을 함수 밖에서도 동일하게 사용한다면 어떻게 될까?

 

a의 값이 1인 이유는 지역변수는 해당 블록을 벗어나면 없어지기 때문이다. 그렇기에 전역변수로 선언했던 1만 유효하다.
 


 

 
 

 
원래대로라면 이 코드는 오류가 발생되어야 마땅하지만 이상하게도 잘 출력이 되고 있다. 오류가 발생하는 이유는 print(a)에서 사용한 a 변수가 어디에도 선언되지 않았기 때문이다. 함수 안에서 사용된 변수는 함수 안에서만 사용될 뿐, 함수 밖에서는 사용되지 않는다.

 


 
 
 
 

함수 안에서 함수 밖의 변수를 변경하는 방법

 
vartest 함수는 입력으로 들어온 값에 1을 더한 값을 리턴하도록 변경했다. 따라서 a = vartest(a)라고 작성하면 vartest 함수의 리턴값이 대입된다.

 


 
 
 

 
global a 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다. 하지만 프로그래밍을 할 때 global 명령어는 사뇽하지 않는 것이 좋다. 함수는 독립적으로 존재하는 것이 좋기 때문이다. 외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다. 따라서 되도록 이 방법은 피하고 첫번째 방법을 사용하는 것이 좋다.

 

 


 
 
 
 

lambda 예약어

lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 한다. 보통 함수를 한 줄로 간결하게 만들 때 사용한다. def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 자주 쓰인다.

 

 
람다 함수는 리스트 안에도 넣을 수 있고 그 안에서 함수를 불러올 수도 있다. 이런 자세한 내용까지는 아직 알 필요가 없을 것 같아 예제는 생략한다.
 

 


 
 
 

학습을 마치고

오늘 이렇게 함수에 대한 공부를 진행했다. 아침부터 하루종일 했는데 별로 많이 하지는 못했다. 사실 오전에는 이전 단원을 공부했지만 말이다. 나머지 부분은 저녁에 해볼 것이다.