19.Python-関数機能、Scope、Parameters


Function


関数とは?


  • 重複するコードを組み合わせて機能を実行します.
    →繰り返し使用可能で、コードの読みやすさを向上させる.

  • きっとInputとOutputがinputはparameter,outputはreturn 값である.

  • return値がない場合はNoneを返します.
  • 使用する理由


  • コードの再利用性を向上させ、重複を最小限に抑える.

  • プログラム分解-プログラムまたは機能に基づいて分解され、テストが容易になります.
  • 関数は定義と呼び出しで構成されます。


  • def文として定義され、関数名()として呼び出されます.

  • def文に遭遇した場合、その関数名をネーミングスペースに保存します.
    ->id(関数名)を使用して数値アドレスを表示できます.変数も同じです.
  • Scope


  • グローバル(グローバル):一番外側

  • ローカル(地域)
  • 関数内にある変数→関数の外部にある内部変数は近づけません.
    ただし,関数内部から外部変数としてアクセスできる.
    ->内部にあるかどうかをチェックし、ない場合は徐々に外部に確認します.(non-localまたはglobal)
    シャドウエフェクトシャドウエフェクト:変数名が同じである場合、小さな範囲変数は大きな範囲の変数を隠す
    関数はオブジェクトなので、変数に割り当てることができます.
    関数で変数を検索する場合は、LEGBルールに従って検索します.
    LEGBルール
    Local → Enclosure → Global → Built-in

    Parameters


    関数はinputparameterを受信し、returnの値を出力に返します.
    位置パラメータ(位置パラメータ)
    →入力パラメータの順序はパラメータの順序で渡されます.
    →入力パラメータの順序が変わっても、把握しにくいという欠点があります.

    Keyword Arguments


  • パラメータ順に値を渡さなくてもいいです.

  • これは、関数を呼び出すときにパラメータ名とともに値を渡す方法です.func(parameter2 = value2, parameter1 = value1)

  • どのパラメータがどのパラメータを入力するかを明確に知ることができます.
  • Mixed arguments

  • 位置パラメータとキーワードパラメータを混在させることもできます
  • positionパラメータの順序は守らなければならない.
  • Parameter Default Value


  • default valueを設定すると、値が入力されていなくても関数を呼び出すことができます.

  • 関数を定義するときに、パラメータの値を指定します.def func(param1, param2 = default_value):
  • parameter2異なる値を入力しても正常に動作します.

  • default値がある場合はnon-defaultパラメータの後にする必要があります.
    そうでなければ、SyntaxError: non-default argument follows default argumentが生成されます.
  • def func(a=1,b,c):
      	print(a)
    	print(b)
    	print(c)
    
    func(2,3)
    
    # SyntaxError: non-default argument follows default argument
    →最初の因数2がaパラメータに入るべきか、初期値を変えるべきか、bに入るべきか分からないからです.

    Variable length arguments

  • 位置係数の数を特定しないために使用される.
  • *argsをパラメータとして表す
  • 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)
    
    #`TypeError: func_param_with_var_args() missing1 required keyword-only argument: 'age'`
    TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'エラーが発生しました.
    *argsパラメータは複数のパラメータを受け入れることができるので、ageパラメータの値がわかりません.
    →解決:age=20のように、キーワードageを使用してパラメータ値を指定します.または、*argsパラメータを最後尾に送信し、20を2番目の引数として入力します.

    Variable length keyword arguments

  • キーワード引数の個数が確定していない場合に使用します.(ディック郡)
  • **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")

  • 以上の例では、SyntaxError: invalid syntaxエラーが表示されます.
  • ageおよびaddress前方へ移動?address複数の価格を徴収します.TypeError: mixed_params() got multiple values for argument 'address'
  • addressparameterは、キーワードで引数を入力するkeyword-only argumentである.
  • ## 수정본
    
    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
    
  • 上記の関数呼び出しにキーワードパラメータを追加すると、kwargsにディクソン形式で入力されます.
    上記の例でデバッガ値"아이유"を表示するには、次の手順に従います.
  • 関数パラメータの順序

    func(param1, param2, param3=default_value, *args, key=value, **kwargs)位置パラメータ-ポーリングパラメータ-可変位置パラメータ-キーワードパラメータ-可変キーワードパラメータ

  • Regular Positional args. : 買収の順序を守る基本的な形式

  • Default args. : パラメータに初期値が設定されています.

  • Variable length positional args. : 複数の位置パラメータ*argsを入力した場合

  • keyword-only args. : キーワードを引数として入力します.

  • Variable length keyword args. : 入力された値がパラメータに含まれていない場合**kwargs
  • リファレンスリスト
    https://docs.python.org/ko/3/tutorial/controlflow.html#more-on-defining-functions
    https://getkt.com/blog/python-keyword-only-arguments/
    https://dojang.io/mod/page/view.php?id=2347