본문 바로가기

교육 노트/파이썬 강의

[파이썬 때려잡기] Python 강의 16 - 함수 - 디폴트 및 키워드 인수

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 1 - Hello World!

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 2 - 변수와 자료형, 연산자

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 3 - 파이썬의 자료구조, 리스트 (list)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 4 - 파이썬의 스트링 (string)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 5 - 스트링과 리스트 처리-1

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 6 - 스트링과 리스트 처리-2

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 7 - 튜플 (tuple)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 8 - 딕셔너리 (Dictionary)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 9 - 집합 (set)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 10 - 사용자 입출력

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 11 - 변수와 메모리

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 12 - 조건과 조건문(분기문)

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 13 - 반복문 while문

2018/09/10 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 14 - 반복문 for문

2018/09/12 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 15 - 함수와 프로시져


저번시간에 한 함수에 이어서..



1. 디폴트 인수 (default argument)

게임에서 사용자 ID 를 출력하는 함수를 만들었다고 해보자

def printUser(username):
print(username + "님 안녕하세요~")


printUser("킹갓")
printUser("망겜수준")


킹갓님 안녕하세요~
망겜수준님 안녕하세요~

해당 함수를 사용중인데 로그인하지 않고 사용하고 싶어하는 유저들이 있어 로그인하지 않은경우

일반사용자님 안녕하세요~ 라는 메시지를 띄우고 싶다.

근데 각종 게임을 만들면서 사용하다보니 로그인하지 않고 사용하는 유저들이 너무많아

이럴때마다 

printUser("일반사용자")

처럼 "일반사용자" 를 인자로 넘겨줘야하는것이 너무 귀찮아졌다.

그럴때 사용하는것이 디폴트 파라미터이다.


def printUser(username = "일반사용자"):
print(username + "님 안녕하세요~")


printUser("킹갓")
printUser("망겜수준")
printUser() #인자 넘기지 않음


킹갓님 안녕하세요~
망겜수준님 안녕하세요~
일반사용자님 안녕하세요~

다음과 같이 함수 정의에서 파라미터값을 미리 정해놓으면 해당 인자가 들어가지 않았을경우 미리 정해준 인자가 들어가게된다.


def printUserMessage(username = "일반사용자",message = "안녕하세요"):
print(username +"님 " + message)


printUserMessage("킹갓","강퇴당하였습니다.")
printUserMessage("망겜수준")
printUserMessage()


킹갓님 강퇴당하였습니다.
망겜수준님 안녕하세요
일반사용자님 안녕하세요

위와 같이 사용가능하다.




2. 키워드 인수

위 함수에서 일반사용자에게 다른메시지를 띄워주고 싶으면 어떻게할까?

printUserMessage("강퇴당하였습니다.")

이렇게 해버리면..

강퇴당하였습니다.님 안녕하세요

과 같이 출력되게된다.

기본적으로 함수의 인자는 들어가는 순서에 따라 정해지게 되어있어 처음들어가는 인자는 username이어야한다.

따라서 결국

printUserMessage("일반사용자" ,"강퇴당하였습니다.")

일반사용자님 강퇴당하였습니다.

과 같이 일반사용자가 디폴트 인수임에도 불구하고 넘겨주어야하는데

파이썬에서는 이와 같은 상황을 해결하기위해 키워드 인수 방법을 제공한다.

printUserMessage(message = "강퇴당하였습니다.")

일반사용자님 강퇴당하였습니다.

과같이 파라미터 이름을 지정하면서 넘겨주게 되면 해당 파라미터로 값이 들어가게된다.



728x90