Bunny Code
[Python] - 14) def 로 함수 선언하기 본문
print(), len() 등 등 여태 기본함수들을 배웠는데
이번에는 원하는 함수를 지정할 수 있는 def 에 대해 배워볼게요!
def <함수 이름>() :
<문장>
위의 코드 처럼 입력을 해주면 <문장>을 실행시켜주는 <함수 이름>을 가진 함수를 정해줄 수 있습니다.
예를 들어, 입력하는 것이 무엇이든 세 배를 만들어주는 함수를 만들어주고 싶은 경우 input 함수와 def 를 이용하면 됩니다.
이 때 주의해야할 점은 input 함수로 입력하는 것이 숫자여도 문자열로 인식하기 때문에 곱셈이 되는 것이 아니라 3번 반복해줍니다.
곱셈을 원하면 int() 함수를 사용해 숫자의 자료형으로 만들어주면 됩니다.
수학을 배울 때 함수 단원에서 매개변수에 대해 배운것을 기억하시나요?
마찬가지로 파이썬에서도 매개변수를 이용해 함수를 만들어 줄 수도 있습니다.
(저는 매개변수가 많이 어려웠어요ㅠㅠ, 그래서 여러번 읽어보시거나 직접 많이 해보셔서 이해하는 수 밖에 없을 것 같아요.)
아까 def 를 사용할 때는 빈 괄호 형태인 () 를 사용했는데, 이번에는 괄호 () 안에 사용할 매개변수를 넣어줍니다.
def <함수 이름>(<매개변수1>,<매개변수2>, ... ) :
<문장>
이렇게 코드를 입력하면 매개변수로 이루어진 함수를 만들어 줄 수 있습니다.
'나는 A 라는 문자열을 B 번 입력하고 싶어...!' 라는 코드를 작성할 때 매개변수를 이용한 def 를 사용해주면 편합니다.
이번에는 매개변수를 원하는 만큼 받을 수 있는 함수인 '가변 매개변수' 를 활용볼게요.
가변 매개변수를 표시할 때는 * 를 붙여 일반 매개변수와 구분해줍니다.
def <함수 이름>(<매개변수1>,<매개변수2>, ... , *<가변 매개변수>) :
<문장>
가변 매개변수는 보통 리스트 처럼 활용하는데, 일반 매개변수와 구분하기 쉽도록
하나만 사용 가능하고 일반 매개변수 앞에 사용할 수 없어요!
예를 들어, 함수(가변 매개변수, 매개변수1, 매개변수2, ... > 처럼 되버리면 가변 매개변수의 범위가 어디까지인지 알 수 없기 때문이에요.
가변 매개함수를 사용하는 예시를 보여드릴텐데 리스트 처럼 어떻게 활용하는지 보시면 이해가 편하실 것 같습니다.
가변 매개변수와 일반 매개변수 말고 기본 매개변수라는 것도 있습니다.
매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본 값을 기본 매개변수라고 하는데,
기본 매개변수 뒤에는 일반 매개변수가 올 수 없습니다. 즉, 일반 매개변수가 항상 먼저 와야됩니다.(아래의 values 처럼)
print 를 입력했을 때 자동 완성 기능으로 나오는 것들이 바로 기본 매개변수입니다!
일반적으로 end = '\n' 으로 되어 있기 때문에
이렇게 기본으로 줄 바꿈이 되는 것을 확인 할 수 있습니다.
그렇다면 end 라는 매개변수 이름을 직접적으로 다른 값으로 입력한다면 어떻게 될까요?
end = '\n' 대신 end="" 라는 빈 문자열을 대입 시키고 값을 출력 시켜보겠습니다.
줄 바꿈 대신 빈 문자열로 이어진 '버즈밴드야안녕' 이 출력 된 것을 확인할 수 있습니다.
이렇게 매개변수 이름을 직접적으로 지정해서 값을 입력하는 기능을 '키워드 매개변수' 라고 합니다!
키워드 매개변수는 기본 매개변수들로 구성된 함수에서도 많이 사용되는데, 예시를 들어볼게요.
아래 예시를 통해 이해하시면 편합니다!
함수(x=2,y=3,z=4) 이런 느낌이고 여기에 x,y,z 를 지정해주면 지정한 값으로 바뀌고 지정을 해주지 않으면 기본 2,3,4 값으로 대입됩니다!
말이 좀 어려운데 이해 안되는 부분은 댓글로 남겨주세요!!
'Hello Coding 파이썬' 을 참고하여 작성하였음.
'Python Basic' 카테고리의 다른 글
[Python] - 16) 메모화 (0) | 2020.08.17 |
---|---|
[Python] - 15) 리턴(return), 재귀 함수 (0) | 2020.08.15 |
[Python] - 13) join(), reversed(), enumerate(), items() (0) | 2020.08.10 |
[Python] - 12) while 반복문, break, continue (0) | 2020.08.09 |
[Python] - 11) for 반복문(with 범위(range)) (0) | 2020.08.07 |