Function Parameters


Assignment.1 non-default valueparameterの前にdefault valueparameterを定義できない理由


関数を定義するときにnon-default valueparameterの前にdefault valueparameterを定義できない理由を考えてみましょう.
→A:アガンの存在優先順位!
  • default valueparameterを使用する場合、パラメータに値が渡されなくてもデフォルトの割り当てられたデータが使用されますが、前に配置すると、後ろに移動するnon-dfault parameterに値が割り当てられていない場合があります.
  • したがって、このような危険が発生する可能性を排除するために、構文チェックレベルでエラー(Error)と判断されたようである.
  • Assignment.2関数を修正し、エラー-位置パラメータと可変パラメータを識別する

    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)
    関数を変更する前にargsを学ぶ必要があります.
  • *argsは「可変因子」の変数です.簡単に言えば、何個の関数因子を受信するか分からない場合に使用します.また、*argsに値を入力すると、その値はtupleとなります.
  • さらに関数に戻ると、*argsは可変パラメータを受け入れる変数であるため、後のageはnon-deffault valueパラメータとみなされるため、エラーが発生する.
    したがって、「age=20」に値を指定すると、正常に動作します.

    Assignment. 3関数を変更し、エラーを認識する-可変キーワード引数

    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)
  • **kawargs
  • *kawargsは*argsと似ていますが、ディクソン形式で保存されています.
  • 位置とキーワードパラメータの関係で問題が発生したため、関数に戻ります.
    従って,addressとkwargsの位置を変えることで解決できる.

    Assignment. 4関数を修正し、エラー-位置パラメータと可変キーワードパラメータを識別する

    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」,「mal」,mobile=「01012341234」,address=「seoul」)
    #関数定義部を指す**kwargs、構文エラーを示す
    だから適当な位置の
    def mixed_params(age, address, name="아이유", *args, **kwargs):	#참고한 파이썬 argument order를 참고
        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)
    ※整理※
  • 関数の引数には、ソート基準が存在する
  • deffunc(位置パラメータ-ポーリング値を指定する引数-可変長引数-無条件キーワードを使用する引数-可変長キーワード引数)があります.