[Python] Function Parameters

Jungmin Seo·2021년 6월 10일
0

🍔 default value parameter와 non-default value parameter의 위치

default value parameter는 항상 non-default value parameter보다 뒤에 와야 한다.

!!def func(non-default, default)


수정 전 - 오류발생

def love_you(my_name="아이유", your_name, his_name): 
   print(f"{my_name} loves {your_name} and {his_name}") 
   
love_you("정우성", "이정재")

parameter가 3개인 상태에서 argument 2개가 입력되면,
앞에서부터 차례대로 my_name = "정우성", your_name = "이정재"로 지정되어
마지막 parameter인 his_name에 지정될 argument가 존재하지 않게 된다.

이를 방지하기 위해, default value parameter가 항상 non-default의 뒤에 오도록 한다.


수정 후 - 정상출력

def love_you(your_name, his_name, my_name="아이유"): 
   print(f"{my_name} loves {your_name} and {his_name}") 
   
love_you("정우성", "이정재")


# 출력
아이유 loves 정우성 and 이정재

🍕 위치인수와 가변인수의 위치

가변인수는 항상 위치인수보다 뒤에 와야 한다.
(가변인수 뒤에 오는 위치인수들은 의미가 없어진다.)


수정 전 - 오류발생

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)

수정 후 - 정상출력

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

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


#출력
name=정우성
age=20
args=('01012341234', 'seoul')

🍟 가변 키워드 인수의 위치

가변 키워드인수는 항상 다른 키워드인수보다 뒤에 와야 한다.


수정 전 - 오류발생

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")

수정 후 - 정상출력

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

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


# 출력
name=정우성
age=20
address=seoul
kwargs={'mobile': '01012341234}'

🌭 Combination

  • 인수 위치 정리
    위치인수 > 가변인수(*arg) > 키워드인수 > 가변키워드인수(**kwargs)

  • 같은 인수는 중복될 수 없음

수정 전 - 오류발생

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")
# 위치인수와 키워드인수에 모두 'address'가 입력되었음 

수정 후 - 정상출력

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

mixed_params(20, "seoul", "정우성", "01012341234", "male" ,mobile="01012341234")
# 키워드인수 'address=seoul'를 제거하고 위치인수의 value로 'seoul' 입력


# 출력
name=정우성
age=20
args=('01012341234', 'male')
address=seoul
kwargs={'mobile': '01012341234}'
profile
Hello World!

0개의 댓글

관련 채용 정보