파이썬 함수의 파라미터, 인수 위치

김예랑·2021년 6월 10일
0
  1. 함수를 정의 할때 default value parameternon-default value parameter 앞에 정의 하면 안 되는 이유

기본값을 설정해주는 이유는 함수 호출시 해당 인자값 입력을 생략할 수 있게 해주기 위함인데 만약에

def function(a = 1, b):
	return a, b

이런 식으로 default value parameter를 앞에 정의하면
함수 호출시

function(1, 3)
function(1, 8)

처럼 해당 인자값을 입력해주어야 한다.

그러므로 파라미터의 기본값을 설정하려면 모두 뒤쪽에.

  1. 위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치
  • 아래 코드는 오류를 발생시킨다.
def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)

func_param_with_var_args("정우성", "01012341234", "seoul", 20)

=>
Traceback (most recent call last):
  File "main.py", line 9, in <module>
    func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
 

수정해 봐야겠다.

def func_param_with_var_args(name, age, *args):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)

func_param_with_var_args("정우성", 20, "01012341234", "seoul")

=>
name=정우성
args=('01012341234', 'seoul')
age=20
  1. 가변 키워드 인수 (variable length keyword arguments)의 위치
  • 아래 코드는 오류를 발생시킨다.
def func_param_with_kwargs(name, age, **kwargs, address=0):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

=>
File "main.py", line 1
    def func_param_with_kwargs(name, age, **kwargs, address=0):
                                                    ^
SyntaxError: invalid syntax

또 수정해봐야겠다.

def func_param_with_kwargs(name, age, address=0, **kwargs,):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

=>
name=정우성
age=20
kwargs={'mobile': '01012341234'}
address=seoul
  1. 위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치

아래 코드는 오류가 난다.

def mixed_params(name="아이유", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")

수정해보자

def mixed_params(age, name="아이유", *args, address, **kwargs):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")


=>
name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
profile
안녕하세요. 백엔드 애송이 백송이 김예랑 입니다.

0개의 댓글