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

3716 단어 pythonpython
  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

좋은 웹페이지 즐겨찾기