[Python] 함수 정의 _ argument / parameter 본문

프로그래밍/Python

[Python] 함수 정의 _ argument / parameter

디유비 2020. 2. 3. 22:00

1. Default Argument

함수에 인자를 넘기지 않아도 실행될 수 있는 기본값을 지정해 둘 수 있다. 

출처 : docs.python.org

위 예시와 같이 "argument 명 = 값"으로 명시해두면 된다. 

위 함수는 prompt에 질문을 받은 후에 유저로부터 입력을 받고 입력 값에 따라 적절한 값이 포함되어 있지 않으면 reminder를 출력해주고 retries횟수만큼 prompt질문을 다시 묻고 포함되어 있다면 True 또는 False를 return 하는 함수이다.

 

위 예제에서 나오는 키워드 중에 "in" 키워드는 "in" 키워드 앞에 있는 변수에 뒤에 있는 값이 포함되어 있는지를 확인하는 키워드이다.

참 쉽죠?

 

이 default 값은 함수를 call 할때 다른 값을 주게 되면 그 값으로 함수를 실행한다.

ask_ok 함수를 콜 하는 방법은 3가지가 있다.

  • default 값이 없는 인자만 전달 하는 법 
    ask_ok('당신은 BTS를 좋아합니까?')
  • default 값이 있는 인자 하나에만 값을 전달하는 법
    ask_ok('당신은 BTS를 좋아합니까?', 2)
  • 모든 인자에 값을 전달 하는 법
    ask_ok('당신은 BTS를 좋아합니까?', 3, '당신은 yes 아니면 no만 선택할 수 있어요!')

2. Keyward argument

키워드 인자는 함수를 호출(call)할 때 argument명을 이용해서 값을 전달하는 것이다.

위 예제로 계속 이야기해보자.

ask_ok(retries=3, prompt='당신은 BTS를 좋아합니까?') 

이런 식으로 호출하는 방법도 있다는 것이다. 하지만 argument명을 쓸 거면 다 쓰고 쓰지 않을 거면 전부 쓰지 않는 습관을 길러야 한다. argument명을 쓰지 않으면 인자의 순서대로 값을 인식한다. 이것을 positional argument(위치 인자)라 하고 argument명을 쓰는 것을 keyword argument(키워드 인자)라고 한다. 키워드 인자는 위치 인자 뒤에 나올 수 있으나. 키워드 인자가 먼저 나온 다음에 위치 인자를 쓸 수 없다.

예를 들어

ask_ok('당신은 BTS를 좋아합니까?', retries=1)  가능

ask_ok(prompt='당신은 BTS를 좋아합니까?',1) 불가능

3. Arbitrary Argument Lists

가변 길이 인자(여러 개의 인자)들은 보통 함수 선언 시 가장 마지막 인자로 선언한다. 

가변 길이 인자는 값을 전달하는 순서를 보장한다.

Comments