Python基礎文法-02


Python


Function Parameters



関数の変数を決定するにはいくつかのルールがあります.
  • 変数には、一般変数、*変数、**変数があります.
  • *変数はtuple形式であり、入力した変数外の資料をtuple形式で格納する.
  • 72**変数は最後の順序で記入してください.
  • のデフォルト値パラメータは、常に通常の変数の後に書く必要があります.
  • 例外*変数の後に4番ルールは適用されません.
  • *変数の後の一般変数は、関数を使用するときに変数名を呼び出して入力する必要があります.(位置は関係ありません.)
  • 义齿


    4番のルールを考えてみましょう.なぜ関数を定義するときにdefault value parameter(デフォルトパラメータ)をnon-deffault value parameter(デフォルト値を指定しないパラメータ、通常変数)の前に定義できないのですか?
    デフォルトパラメータは省略可能であり、関数を使用する場合、通常パラメータかデフォルトパラメータかを区別できません.

    Functional Parametersの使用例1

    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)
    上記の例を実行します.
    Traceback (most recent call last):
    File "main.py", line 5, in
    func param with var args(「鄭雨盛」,「01012341234」,「seoul」,20)
    TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
    エラーコードの内容からageに対応する値はありません.これは5番ルールの内容です.
    変数名でageの値を入力します.
    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", age=20)
    再稼働します.
    鄭雨盛
    args=('01012341234', 'seoul')
    age=20
    出力が正しいことを確認できます.

    Functional Parametersの使用例2

    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")
    上記の例を実行しましょう.
    File "main.py", line 1
    def func_param_with_kwargs(name, age, **kwargs, address=0):
    SyntaxError: invalid syntax
    関数の変数をチェックすると、**変数が3番目に位置していることがわかります.これは3番ルールの内容に相当します.
    **kwargsを修正します.
    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")
    再稼働します.
    鄭雨盛
    age=20
    kwargs={'mobile': '01012341234'}
    address=seoul
    出力が正しいことを確認できます.

    Functional Parametersの使用例3

    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")
    上記の例を実行しましょう.
    File "main.py", line 1
    def mixed params(name=“iu”,*args,age,**kwargs,address):
    SyntaxError: invalid syntax
    **変数は4番目にあります.これは3番ルールの内容に相当します.
    **kwargsを修正します.
    def mixed_params(name="아이유", *args, age, 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")
    再稼働します.
    Traceback (most recent call last):
    File "main.py", line 7, in
    mixed params(20,「鄭雨盛」,「01012341234」,「mal」,mobile=「01012341234」,address=「seoul」)
    TypeError: mixed_params() missing 1 required keyword-only argument: 'age'
    「age」変数についての内容はないそうです.これは5番に相当する内容です.
    解決策は2つある.関数のage変数をnameの前に移動するか、関数の使用時にageを直接呼び出して割り当てます.

    まず「age」変数を移動します。

    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")
    再稼働します.
    鄭雨盛
    args=('01012341234', 'male')
    age=20
    kwargs={'mobile': '01012341234'}
    address=seoul
    出力が正しいことを確認できます.

    今回は直接「age」を呼び出して割り当てます。

    def mixed_params(name="아이유", *args, age, 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(age = 20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
    再稼働します.
    File "main.py", line 7
    mixed params(age=20,「鄭雨盛」,「01012341234」,「mal」,mobile=「01012341234」,address=「seoul」)
    SyntaxError: positional argument follows keyword argument
    「age」変数はデフォルトパラメータの前に使用され、エラーが発生しました.これは4番ルールの内容です.
    「address」変数を後ろに移動します.
    def mixed_params(name="아이유", *args, age, 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("정우성", "01012341234", "male" ,mobile="01012341234", address="seoul", age = 20)
    再稼働します.
    鄭雨盛
    args=('01012341234', 'male')
    age=20
    kwargs={'mobile': '01012341234'}
    address=seoul
    出力が正しいことを確認できます.