본문 바로가기

Programming/Python

[파이썬 프로그래밍] 19화 람다함수 와 함수인자

[파이썬 프로그래밍] 19화 람다함수 와 함수인자




 수에 대해서 진도가 계속 나가고 있습니다. 함수가 그만큼 중요하기 떄문이죠. 처음에 개념을 잡고,

많은 함수를 만들어 보는 것이 좋습니다. 그런 시간이 지난다음에는 하나의 함수를 꼬아서 깊게

들어가서 공부하는것도 좋죠.


이번 시간에는 람다함수와 함수인자 모드에 대해서 공부해 보도록 하겠습니다.



람다함수 란?

lambda 인자 : <구문>



람다함수가 뭘까요? 람보함수의 친구인가요? ;;;

사실 람보처럼 게릴라 성격의 함수라고도 할 수 있습니다. 람다함수는 한 줄을 실행한 결과 값이 바로 반환값이

되는 함수입니다. 즉, 한줄정도로 간단하게 함수가 필요할때 , 함수를 인자로 넘겨줄때등 람다함수를 

쓸수 있죠. 


함수원형은 위와 같이 사용 됩니다. 

예제와 함께 보도록 하겠습니다.





- 자, 충분한 시간을 갖고 위의 코드를 해석해 보세요. 


이번엔 제가 해석해 보겠습니다.

root 라는 변수를 선언하고 labmda(람다함수)를 정의 한다음에 

a,b 인자를 생성하고 조건으로 a * b를 넣어줬습니다.


그리고 root 변수에 값으로 10,20을 넣어줍니다.

root 변수는 람다함수가 들어가 있으며 여기에 2개의 인자값을 가지고 2개의 인자값은 각각 곱하는 공식이

들어가 있었으므로 10과 20은 각각 a 와 b에 들어가서 10 * 20 이라는 공식이 성립됩니다. 

10 * 20 은 200 이므로 반환값으로 200 이 출력 됩니다.


그다음에 보시면, 

(lambda a: a * a)(2) 

라고 정의했습니다. 인자값은 하나이죠? 그리고 값으로 2를 정의했으니 a에는 2가 들어가고 

a * a  는 결과적으로 2 * 2 라는 등식이 되죠. 그러니까 답은 4를 반환해 줍니다.


그 다음으로, globals() 를 호출해 봅니다. 

지난 시간에 전역영역이죠. root 라는 변수를 선언해준게 2번쨰줄에 보입니다.

root 변수는 람다함수를 넣어났으니 <Function <lambda> at 메모리주소 >

형식이 보입니다. 람다함수라는 것을 증명하는 셈이죠.


그 다음은 계속 반복하는건데요. 인자값으로 전달되는 개념을 조금 더

이해하기 쉽게 숫자를 1씩 증가가면서 예제로 만들어봤습니다.


3을 넣으니까 3 * 3 = 9 

4을 넣으니까 4 * 4 = 16


이런식으로 증가하는것이 보이실 겁니다. 람다함수에 대해서 개념이 잡히셨다면

변수명도 바꿔보고 값도 바꿔 가면서 장난감 만지듯이 가지고 놀아보시면 

기억에 좀더 오래 가지 않을까 싶습니다.





함수인자 모드 - 기본 인자 값



파이썬에서는 인자모드가 있습니다. 그중 첫번째 기본 인자 값에 대해서 설명 

드리겠습니다. 기본인자는 지금까지 했던게 다 기본인자에 해당해서 별다른

설명이 필요없긴 하는데요.


함수를 호출할때 인자를 딱히 지정하지 않아도 기본값이 나옵니다.

game() 이라고 호출하니까

user1 + user2 를 더한값인 300 이 출력 됩니다.


인자를 숫자 2를 넣으면 user1에 숫자 2가 들어가게 되죠.

그렇게 되면 2 + 200이 되니까 202가 반환값으로 나온것 입니다.


아래 숫자3을 넣으니까 203, 10을 넣으니까 210이 출력 되는것도 user1 에 값이 들어가서

user2는 기본값 200이 있어서 둘을 더해주기 떄문에 저런값이 나오는 것입니다.





키워드 인자



변수 이름으로 인자를 전달할수 있습니다. 이것이 키워드 인자 입니다.

위의 예제를 잘 살펴보시길 바랍니다.



Bank 라는 함수는 Welcome 이라는 문자열이 앞에 붙고 ' : ' 다음에 ID 인자와  ' : ' 이 또 다시

붙고 Money 인자가 들어갑니다.


Bank("user1","1000") 이라고 호출하면

ID 에 user1이라는 값이 들어가고, Money 에 1000 이 들어가게 되죠.

그래서 결과값으로, 

'Welcome:user1',' 1000'이 출력 됩니다.


그다음에는 순서를 바꿔서 출력을 시도했지만 키워드 Money 와 ID 를 통해 값을 넣어주자

결과값으로 순서가 매칭되서 나옵니다. 이것이 바로 키워드 인자 입니다.





가변인자 리스트




가변인자 리스트는 무엇일까요?

먼저 '가변'이라는 말을 아실필요가 있습니다. 가변((可變) 이라는 것은 사물의 모양이나

성질이 바뀌거나 달라질 수 있음 을 의미하는 말입니다.  그래서 일상대화를 나누다 보면

이런말을 쓰죠. "지금 저의 스케쥴은 가변적이라서, 그떄 만날 수 있을지 확답은 못드리겠습니다"


아무튼 가변의 변(變)이 변할 변 이라는 한자 입니다. 


위의 예제를 보시면 *args 라고 인자를 정의하고 있는데요.

*를  함수인자 앞에 붙이면 정해지지 않은 수의 인자를 받을 수 있다는 것을 의미 합니다.


이렇게 가변인자 리스트는 입력 받은 인자를 튜플에 저장하게 됩니다.