난 parameter 를 제대로 지정해야했다. -2-

ensia96·2020년 3월 25일
0

과자말고 과제ㅠ

목록 보기
2/4
post-thumbnail

WeCode 7기로 수업을 받고있는 슈퍼개발자,

춤추는망고입니다.

( 춤 안춥니다. )

의도치않게 시리즈가 되버렸습니다.

과제 제출용 문서이므로,

지나가다가 읽으시는분들이 이해 못하셔도 상관 없습니다.

( '못 알아먹겠으면 나가주세요~' 이 말입니다. )







시작하겠습니다.


함수를 정의할 때,

default value parameter를

non-default value parameter 앞에

정의하면 안된다.


에 대한 설명을 하는 과제입니다.




사실, 여기서 우리가 짚고 넘어가야할 점은

Python 이라는 친구는 함수라는 명령을 받을때

어떤식으로 처리를 하는가

였습니다.



우선,

함수라는 친구의 구조에 대해 알아봅시다.

함수 란?

컴퓨터를 향한 명령이 담긴 변수입니다.

컴퓨터에게 어떤 값을 입력했을 때,
그 값에 대해 명령을 실행하도록 하는 것이 목적이죠.
( 물론 , 값을 넣지 않아도 되는 경우도 있어요.)

아시겠나요?

몰라도 됩니다. 뒤에 오는거 보고 이해해보세요.





이번엔 입력값에 대해서 알아보겠습니다.


함수를 정의할때는

def   '함수이름' (   )   :
        명령

이런 식으로 def ( definition / 정의 ) 태그를 사용해서

정의해주는데요.


이때, 저 함수이름 뒤에 있는 (   ) 안에

' 명령의 대상이 될 친구 ' 의 이름을 정해서 넣어줍니다.

이것이 parameter 입니다.

(매개변수라고도 해요)


명령 안에 원하는 곳을 정해두고,

그곳으로 값을 보내도록 하는겁니다.




예를 들어서 보여드리죠.

내가 정한 숫자 두 개를 더하는 명령을 가지고있는 함수를 만들고 싶다면?

def 더하기 ( 숫자1, 숫자2 ) :
	return ( 숫자1 + 숫자2 )

이런식으로 되겠죠?






입력을 알았으면, 출력도 아는 것이 인지상정!




위에꺼 복붙했습니다. 완전히 같은 내용입니다.

def 더하기 ( 숫자1, 숫자2 ) :
	return ( 숫자1 + 숫자2 )

어라? 처음보는 녀석이 있네요?

' return ' 이라는 녀석인데요?

' 돌아온다 ' 라는겁니다.


아까 넣은 입력값이, 명령이라는 험난한 길을 건너와서 저렇게 바뀌어서 돌아온겁니다...





이렇게 들어갔다가 나오면 사람이 바뀌어버리는 군대같은 것이

바로 함수인거죠....

( 참고로 저기서 return 이라는 명령은 " 결과값을 돌려줘! " 라는 명령입니다. )







저렇게 이름을 지어준 함수를 부를땐 어떻게 해야할까요?


함수야!!!

잠깐만 와봐!!!

( 허헣, 오면 이거 시켜야겟당 )




바로 이겁니다.

함수이름을 부르고, 검은 속내를 ( ) 안에 감춰두는겁니다.

뭘 시킬지가 괄호안에 들어가는건데, 이건 아까 parameter 라고 했죠?



이때 우리가 시키고싶은 검은 속내가 바로,

argument 입니다.

(인자라고도 해요)






그런데, 우리가 하기 쉬운 것만 시키다보면

점점 욕심이 생길겁니다...




점점 더 많고, 복잡한 것들을 시키겠죠..



그렇게 복잡한 일들을 시킬때에

파이썬이라는 친구가 저희의 말을 함수가 알아서 할 수 있게 설명해줘요.





함수에게 우리가 시킬 수 있는 내용을 보죠.




Python 과 같은 프로그래밍 언어에는 데이터의 종류가 다양합니다.

( 시킬 수 있는게 많다는거죠 ㅎㅋ )


그 중,

숫자 / 글자 / 참거짓 / 값 없음 / 정의 안됨

을 원시 자료형이라고 하는데요.

보시면 아시겠지만 단순하고,직관적인 자료형들입니다.

( 왜 단순하다 하는지는 곧 알게됩니다. )



그리고,

이러한 ' 원시 자료형 ' 들이 담겨있는 집합

을 컨테이너형 자료라고 합니다.

원시자료형보다는 살짝 더 복잡해진 자료형입니다.


여기에서부터 핵심이 등장합니다!





변수에 값이 묶여있는 구조의 데이터는

key value pair 라고 부릅니다.

( 벌써부터 복잡해 보이쥬~? )


이렇게 어떠한 변수에 어떠한 값을 묶어주는 것을

' 맵핑한다 ' 라고 하구요.


아까 다뤄야 했던 명제에서

default value parameter 는

( ' 아무것도 인자가 안들어오면, 그냥 이거로 처리해라! ' )


기본값 ( default ) 이 맵핑되어있는 데이터 입니다.

( 이런 데이터가 인자로 오면 keyword argument 입니다. )


평범한 데이터보다 훨씬 복잡하죠?

값이 정해진 데이터니까요 ㅎ




저렇게 복잡한 key value pair 자료형들의 집합은

바로, 딕셔너리입니다.

( 딕셔너리의 기호는 {} 인데, 맵핑되지 않은 자료를 담을땐 set 이라고 불러요. )




ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

점점 더 복잡해지쥬?


사실은 파이썬도 이런 설명의 순서처럼 단순한 자료부터 처리하고,

복잡한 자료들을 나중에 처리한답니다.


파이썬이 어떤 자료형들을 더 먼저 처리하게 해주어야 하는지

순서대로 잘 써주지 않으면, 파이썬도 투정을 부린답니다.


이것이 위에서 설명해야했던 내용에 대한 풀이입니다.

해외의 어떤 천재분이 정리하신 내용을 바탕으로 정리한 글입니다.

그 대단한 글 링크 : https://getkt.com/blog/python-keyword-only-arguments/

사실상 ↑ 링크의 핵심 ( 사진 )
https://getkt.com/wp-content/uploads/2019/02/python-function-definition-arguments-kind-and-order.jpg

↑ 의 내용에 대해 이해하고, 정리한 기준 ↓

regular positional argument : 보통의 위치적 인자
default argument : 기본 인자

variable length positional argument : 길이가 있는 위치적 인자
= * 을 붙여서 표현 / 튜플의 형태를 띰 ( 컨테이너 자료형 )

keyword-only argument : 키워드 인자로만 구성
-> non-default keyword-only argument
: 기본값 매개변수가 없는 상태에서의 키워드 인자
-> keyword-only argument with default
: 기본값 매개변수가 있는 상태에서의 키워드 인자

variable length keyword argument : 길이가 있는 키워드 인자
= ** 을 붙여서 표현 / 딕셔너리의 형태를 띰 ( 맵핑 자료형 )

profile
지금까지 이런 망고는 없었다. 이것은 개발자인가 춤추는망고인가

0개의 댓글