廖先生についてPython(13):関数3-関数のパラメータを学ぶ

2725 ワード

続:第(11)節本文のすべての引用は廖雪峰先生のウェブサイトから来た.転載は出典を説明してください.
  • デフォルトパラメータdef power(x,n=2):......上記の「n=2」は、パラメータnが入力されていないときにデフォルトの値です.注意:必須パラメータは前で、デフォルトパラメータは後で、そうでなければPythonの解釈器は
  • とエラーを報告します.
  • 可変パラメータ--入力されたパラメータの個数は可変である.例えばa 2+b 2+c^2+を計算すると...
  • 従来の方法def calc(numbers):......numbersはlistまたはtupleである.呼び出すときはlistまたはtuple:calc([1,2,3])
  • を組み立てる必要があります.
  • 可変パラメータdef calc(*numbers):......関数内部ではパラメータnumbersがtupleを受信するため、関数コードは完全に変わらない.ただし、この関数を呼び出すと、0個のパラメータを含む任意のパラメータを入力できます.

  • もちろんlistまたはtupleが定義されている場合は、>>nums=[1,2,3]>>calc(nums[0],nums[1],nums[2])
  • 上のこのような書き方は煩雑で、Pythonはlistまたはtupleの前に*号を直接追加することを許可し、listまたはtupleの要素を可変パラメータに変えて伝達する:>>nums=[1,2,3]>>calc(*nums)*numsnumsというlistのすべての要素を可変パラメータとして伝達することを示している.この書き方はかなり役に立ち、よく見られます.

  • キーワードパラメータキーワードパラメータを使用すると、関数内で自動的にdictに組み込まれた0つまたは任意のパラメータ名を含むパラメータを入力できます.def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)//kw==keyword
    >>>person('Michael', 30)
    name: Michael age: 30 other: {}
    
    >>> person('Adam', 45, gender='M', job='Engineer')
    name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    

  • キーワードパラメータは何に使いますか?関数の機能を拡張できます.たとえば、person関数では、nameとageの2つのパラメータを受信できることを保証しますが、呼び出し者がより多くのパラメータを提供したい場合は、受信できます.ユーザー名と年齢が必須である以外はオプションで、キーワードパラメータを利用してこの関数を定義すれば登録のニーズを満たすことができます.
    可変パラメータと同様に、dictを組み立ててから、キーワードパラメータに変換して送信することもできます.
    d
    >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, city=extra['city'], job=extra['job'])
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    
            :
    >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, **extra)
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    
    **extraは、extraというdictのすべてのkey-valueをキーワードパラメータで関数の**kwパラメータに入力することを示し、kwはdictを取得し、kwで得られたdictはextraのコピーであり、kwの変更は関数外のextraに影響しないことに注意する.
    4.パラメータの組み合わせ
    Pythonで関数を定義するには、必須パラメータ、デフォルトパラメータ、可変パラメータ、キーワードパラメータ、名前付きキーワードパラメータの5つのパラメータを組み合わせて使用できます.ただし、パラメータ定義の順序は、必須パラメータ、デフォルトパラメータ、可変パラメータ、ネーミングキーパラメータ、キーワードパラメータである必要があります.
    任意の関数については、パラメータがどのように定義されているかにかかわらずfunc(*args,*kw)のような形式で呼び出すことができます.
    可変パラメータとキーワードパラメータを定義する構文に注意してください:*argsは可変パラメータであり、argsはtupleを受信します.**kwはキーワードパラメータであり、kwはdictを受信する.
    - end -