#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[re]positional parameters와 keyword parameters2020-09-14 22:13
작성자

함수를 이용할 때 함수의 파라미터를 입력하는 방식은 2가지가 있습니다.

하나는 함수에서 요구하는 위치에 맞추어 파라미터를 입력하는 positional parameter,

다른 하나는 함수에서 요구하는 변수의 이름에 맞추어 파라미터를 입력하는 keyword parameter 입니다.


두 숫자의 차을 구하는 아래의 함수를 예로 들어 설명하겠습니다.

def difference(a,b):

   return a-b


위의 difference 함수를 사용하기 위해, 함수의 사용자는 difference()의 괄호 안에 두 숫자를 입력해야 합니다. 사용자가 5에서 2를 뺀 값을 확인하고 싶다면, 함수의 구조상 a에서 b를 빼는 구조이므로 a에 5, b에 2를 입력해야 합니다.

이 때 함수에서 선언한 파라미터의 위치에 맞춰서 difference(5,2)와 같이 입력하면 됩니다. 이것이 positional parameter입니다. 

한편 difference(a=5,b=2), 또는 difference(b=2, a=5)와 같이 입력 파라미터의 순서가 바뀌어도 내가 어떤 파라미터를 뭐라고 두겠다! 라고 등호를 통해 명시하면 동일한 결과를 얻을 수 있습니다. 이것이 keyword parameter입니다. 굳이 왜 이렇게 사용해야 하나라고 생각하실 수도 있지만, 나중에 함수에서 요구하는 파라미터가 많아지고 모든 입력 파라미터를 입력하지 않아도 되는 경우에 유용하게 쓰이는 기능입니다.


일반적인 함수라면 이렇게 positional parameter와 keyword parameter를 동시에 사용할 수 있지만,

함수를 만든 사람이 둘 중 어느 한 가지 방식만 사용하라고 강제할 수도 있습니다.

함수 끝에 ,/ 또는 *, 를 붙여 준다면 각각 positional parameter와 keyword parameter 만 사용하라는 의미가 됩니다.

질문자님이 이용한 함수는 abs(x,/)로 positional parameter만 이용이 가능한 함수이며, 이 경우 키워드 명시 없이 올바른 위치에 올바른 값을 넣어야 하는 것입니다.







댓글