[Python] 다양한 arguments

2976 단어 pythonpython

parameter 와 arguments

무엇이 parameter 이고 무엇이 argument 일까

  • parameter : 매개변수
  • argument : 인자

매개변수는 함수를 정의하는 경우에 필요한 변수(variable) 를 의미한다.

인자는 정의된 함수를 불를 때 매개변수의 값(value) 으로 넘겨주는 실제 값을 의미한다.

def minus(x,y):
		return x-y
print(minus(4,2))

2

여기서 x,y 가 parameter 이고

4,2 가 argument 이다.

이렇게 인자들은 매겨변수에 전달되어 함수의 결과를 출력하게 됩니다.

인자들을 매개변수에 전달하는 방법들을 알아보겠습니다.

첫째 . Positioning argument

위에 예시처럼 4와 2를 직접 넣어주는 방식입니다. 이 경우에는 순서가 중요합니다. 2와 4 순서로 넣어주면 전혀 다른값이 출력됩니다. 순서가 중요하기에 이름에도 position 이 쓰여있습니다.

둘째 . Keyword argument
파라미터와 인자를 모두 써주는 방식입니다.

print(minus(x=4,y=2))
print(minus(y=2,x=4))

2
2

셋째 . Keyworded variable length of arguments
파라미터를 써주기 때문에 순서에 구애받지 않습니다. 매개변수(variable) 자체에 인자(value)가 들어간 채로 작동하기 때문입니다.

파이썬에 존재하는 기능입니다. arguments 의 수가 정해지지 않고 유동적으로 변할 수 있는 상황에서 쓰면 유용합니다. 이 arguments 를 선언 하기 위해서는 parameter 이름앞에 두개의 별표 () 로 시작해야 합니다. 주로 kwargs 로 parameter이름을 짓습니다.
과일의 이름과 색을 확인할 수 있는 함수를 생각해보겠습니다.
이런 경우 kwargs 가 유용합니다.

def fruits(**kwargs):
    print(f"과일의 이름과 색을 확인해보세요")

    for feature in kwargs:
        print(f"{feature} : {kwargs[feature]}")

fruits(apple="red")

과일의 이름과 색을 확인해보세요
apple : red

fruits(apple="red", banana="yellow")

과일의 이름과 색을 확인해보세요
apple : red
banana : yellow

과일의 색을 알려주는 함수를 만들었습니다. 지금 떠오르는 과일은 apple 뿐이지만, 향후 banana 가 생각나면 다시 함수를 짜지 않아도, 알려줄 수 있습니다.

함수에 넣어줄 kwargs 는 dictionary 형태로 지정됩니다.

위를 예시로 보면 {apple:"red" , banana="yellow"} 라는 dictionary 로 함수에 전달됩니다.

넷째 . variable length of arguments
간단히 variable arguments 라고 표현하기도 합니다. kwargs 와 비슷하지만 keyword 를 사용하지 않고 순서대로 값을 전달하는 방식입니다. 여기선 별 하나를 사용해 선언합니다. 주로 *args 로 값을 선언합니다.

여러 숫자들을 인자로 받아 더해주는 함수를 생각해보겠습니다.

def numbers(*args):
    total = 0
    for number in args:
        total += number
    print(total)

numbers(1,2,3,4)

10

numbers(1,4,9)

14

함수에 넣어줄 args 인자들은 tuple 로 변환되어 함수에 전달됩니다.

arguments들의 순서

하지만 이러한 인자들을 혼용해서 쓰는 경우에는 순서가 중요합니다.

전달할 인자들을 순서대로 쓰지 않으면 오류가 발생합니다.

positioning argument 와 keyword argument 가 섞여 있다고 생각해봅시다.

minus(x="4","2")

이 경우만 봐도 어디까지가 keyword argument 인지 position argument 인지 헷갈립니다.

그렇기에 position argument 는 keyword argument 보다 앞에 나옵니다.

args 를 사용하는 경우에는 어디서 부터 args로 전달할지가 중요하기에 기본값이 제공된 argument(Default argument) 이후에 나오게 됩니다.

**kwargs 는 함수 작성시 들어간 keyword-only argument 보다 늦게 써줍니다.

여기서 keyword-only argument 란 함수 작성시 쓰여진 keyword 이면서, 함수 호출시에 키와 값 형태로 들어가는 인자 입니다.

순서에 관한 사진을 첨부합니다.

좋은 웹페이지 즐겨찾기