[Python] Function Parameters

22735 ワード

🍔 default valueパラメータとnon-default valueパラメータの位置


default valueparameterは常にnon-default valueparameterの後にある必要があります.
!! 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("정우성", "이정재")
3つのパラメータがある場合に2つのパラメータを入力すると、
前から、my name=「鄭雨盛」、your name=「李政宰」の順に指定します.
最後のパラメータhis nameに指定されたパラメータは存在しません.
このような状況を防止するために、default valueparameterは常に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}'