🐍 Python Function Parameters


Python Function Parametersについて

👏 default value parameter& non-default value parameter


  • default value parameter:パラメータ値を予め指定する
    ex. def member(member="강슬기")

  • non-default valueparameter:パラメータ値が指定されていません
    ex. def member(age)
  • default valueparameterはnon-default valueparameterの前に位置できません!!

    def member(member="강슬기",age, group)
        return f"{member}의 나이는 {age}입니다."
    このように関数を定義するとエラーが発生します.

    non-default valueパラメータはdefaultパラメータの前に表示する必要があります.

    どうしてだめですか。


    まず、Pythonでdefault valueparameterがnon-deffault valueparameterになるまで、関数は定義されません!
    つまり、Pythonは誤った文法として規定されている.
    Pythonがこのような定義を許可すると仮定します
    def member(member="강슬기",age, gropup)
        return f"{member}의 나이는 {age}입니다."
    
    member(28, "레드벨벳")
    これにより,計算機の立場からメンバパラメータが指定されているかどうかの問題点を特定することができない.
    もちろんこのようにmember("강슬기", 28, "redvelvet")を指定することもできます.
    このように指定されていない場合があるので、Pythonではいっそ止めたようです.
    上記の関数を有効にするには、次の手順に従います.
    def member(age, gropup, member="강슬기")
        return f"{member}의 나이는 {age}입니다."
    
    member(28, "레드벨벳")
    指定したパラメータを持つメンバーを後ろに置くとうまく動作します.

    🚀 位置パラメータ(position arguments)と可変パラメータ(variablelength arguments)

  • 位置引数(位置パラメータ):
  • 引数を順番に関数に入れる
    ex.)
    def member(name, age, group)
    
    member("강슬기", 28, "RedVelvet")
  • 可変パラメータ(変長パラメータ):
  • ex.)
    def member(*args):
        for i in args:
            print(i)
    
    member('1','2','3','4')
    >>>1
    >>>2
    >>>3
    >>>4
    可変パラメータに設定された関数に複数の位置パラメータを追加した場合は、1つのグラフィックオブジェクトとして扱われます.
    def member(*args):
        print(type(args))
        
    >>> <class 'tuple'>

    可変パラメータの位置

    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)
    上記のコードを実行すると、

    このようなエラーが発生しました.
    年齢因子はどこだ?
    なぜこのようなエラーが発生したのか考えてみると、Pythonの立場では、私が因子に渡した値がどこ*argsなのか分からないので、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("정우성", "01012341234", "seoul", 20)
    
    >>>name=정우성
    >>>args=('seoul', 20)
    >>>age=01012341234
    またはfunc_param_with_var_args("정우성", "01012341234", "seoul", age=20) 20をage因数に指定したキーワードを送ってください.

    📚 可変キーワードパラメータ(variablelengthキーワードarguments)

  • 可変キーワード引数:key:value形式引数
  • ex.)
    def member(**kwargs):
        print(type(kwargs))
        for i in kwargs.items():
            print(i)
        
    member(name='슬기', age=28, group='redvelvet')
    
    >>> <class 'dict'>
    >>>('name', '슬기')
    >>>('age', 28)
    >>>('group', 'redvelvet')
  • 関数パラメータ名に**を付けると、dicksherry形式をパラメータに渡すことができ、関数はdictクラスオブジェクトとみなされます.
  • 可変キーワード引数の位置

    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")
    可変キーファクタは、可変ファクタの位置の問題と同様の問題も発生します.
    上記のコードを実行しても関数は宣言されません.

    これを見るとPythonではありません!あなたがくれた生命(func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul"))からどこがキーワードの生命ですか!だから関数を宣言することはできません.addfess=「seoul」も可変キーワードパラメータであるとは判断できないためです.
    では、交換しましょう.
    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")
  • 可変キーワード買収を最後まで送れば解決!
  • 位置パラメータとキーワード可変キーワードパラメータ(variablelengthキーワードパラメータ)の位置

  • 今度は可変パラメータ可変キーワードのパラメータキーワードのパラメータなどを出したときに位置を確認しましょう
  • 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")
    これは非常に全体的な苦境であり、これまで学んだことを総合してみましょう.
    キーワード引数は、位置引数の後でなければなりません.キーワード引数は、可変キーワード引数の前でなければなりません.修復に適用しましょう.

    1トン

    def mixed_params(age, address, name="아이유", *args, **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")
    自信を持って
  • に挑戦しましたが、アドレス因子がどこにあるかのエラーが発生しました.
    なぜ目を洗ってもダメなのかずっと考えていましたが、結局addressはパラメータの名前と同じなのでキーワードパラメータには入っていませんでした.
  • 2トン

    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")
    片付けたら.
    age = 20
    name=「IU」->「鄭雨盛」
    *args = "01012341234", "male"
    address = "seoul"
    **kwargs = mobile = "01012341234"
    キーワード引数は、位置引数の後に、キーワードは変数引数の前にある必要があります.
    可変因数があるときは前か後か分からないので、第1セットで間違えました.
    キーワードパラメータをパラメータに渡すと、位置を変えることができると思います.

    ポスト

  • ドラムを勉強している間は、いつもキーワード引数と可変引数を混同していたので、ずっと勉強していましたが、今回整理し直したときは、知らない部分をもっと知りました.