関数定義でサブリスト構文を使用する必要があるのはいつですか

ナイツリー

7.6に示されている関数定義の正式な構文Python言語リファレンスの関数定義は次のとおりです。

decorated      ::=  decorators (classdef | funcdef)
decorators     ::=  decorator+
decorator      ::=  "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE
funcdef        ::=  "def" funcname "(" [parameter_list] ")" ":" suite
dotted_name    ::=  identifier ("." identifier)*
parameter_list ::=  (defparameter ",")*
                    (  "*" identifier ["," "**" identifier]
                    | "**" identifier
                    | defparameter [","] )
defparameter   ::=  parameter ["=" expression]
sublist        ::=  parameter ("," parameter)* [","]
parameter      ::=  identifier | "(" sublist ")"
funcname       ::=  identifier

sublist構文に注意してくださいparameter。これにより、たとえば次の関数定義が可能になります。

def f((a,b,c), d):
    return a,b,c,d

ただし、このsublist構文を使用したPythonコードは見たことがありません(Pythonの経験が非常に限られているためです)。これが私の質問です:

  • sublist正式な関数定義構文(kwargs、*iterableおよび**mappingなどによって提供される他の可能性と比較して、どのような状況で構文が優れているでしょうか?

  • 実際に役立つようにするための実際の(つまり実用的な)使用例はありますか?

sshashank124

1つの理由は、データ自体がリストまたはタプルとして最もよく表されているが、リスト自体よりもその個々の要素を参照している場合です。たとえば、2点間の距離を計算するこの関数を見てください。

def distance_between_points((x1, y1), (x2, y2)):
    return math.sqrt((x2-x1)**2 + (y2-y1)**2)

これは行うよりもはるかに良く見えます:

def distance_between_points(p1, p2):
    return math.sqrt((p2[0]-p1[0])**2 + (p2[1]-p0[1])**2)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

型にハッシュコード関数を定義する必要があるのはいつですか?

分類Dev

関数呼び出し式を使用した `decltype`で関数を定義する必要があるのはいつですか?

分類Dev

Reactクラス内の関数を矢印関数として定義する必要があるのはいつですか?

分類Dev

ストリームを使用する必要があるのはいつですか?

分類Dev

プリプロセッサを使用してCで関数を定義するのはいつですか?

分類Dev

いつreactのイベントリスナーで無名関数を使用する必要がありますか?

分類Dev

invokeCFClientFunction()関数を使用する必要があるのはいつですか?

分類Dev

Javascript:すでに外部関数を使用しているのに、自己呼び出し無名関数を定義する必要があるのはなぜですか?

分類Dev

ジェネリックを使用して型間の関係を定義する必要があるのはいつですか?

分類Dev

別の関数で定義されたサブ要素を使用する必要があります

分類Dev

変数を使用して特定のサブリストからランダムに選択された値を削除して、削除する必要のあるランダムな値を定義するにはどうすればよいですか?

分類Dev

エラー:PostgreSQL9.3を使用するdblinkの関数には列定義リストが必要です

分類Dev

多数のゲスト実行可能アプリケーションを使用するクラスターのサービスファブリック配置/負荷分散構成で設定する必要があるしきい値は何ですか?

分類Dev

テンプレート関数でtypenameを使用する必要があるのはいつですか?

分類Dev

未使用の仮想関数を定義する必要があるのはなぜですか?

分類Dev

テストでTestEntityManagerを使用する必要があるのはいつですか?

分類Dev

プリプロセッサディレクティブを使用してC ++で関数を定義するのはいつですか?

分類Dev

サブクラスのすべての関数をスーパークラスで定義する必要がありますか?

分類Dev

array()を使用して配列を定義する必要があるのはいつですか?

分類Dev

Typescriptの定義。クラスを動的にする必要があるのはいつですか?

分類Dev

関係を定義するときに流暢なAPIを使用する必要があるのはいつですか

分類Dev

Z3で変数の代わりに関数を使用する必要があるのはいつですか?

分類Dev

リストを作成するには、ユーザー定義関数を使用する必要があります

分類Dev

複数のコンストラクターを使用する必要があるのはいつですか?

分類Dev

ES6の矢印関数でreturnステートメントを使用する必要があるのはいつですか

分類Dev

SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

分類Dev

迅速。特定のデータ型でオブジェクト/値を定義する必要があるのはいつですか

分類Dev

関数内の関数と個別のプライベート関数を使用する必要があるのはいつですか?

分類Dev

TypeScriptでリターン関数型を宣言する必要があるのはいつですか?

Related 関連記事

  1. 1

    型にハッシュコード関数を定義する必要があるのはいつですか?

  2. 2

    関数呼び出し式を使用した `decltype`で関数を定義する必要があるのはいつですか?

  3. 3

    Reactクラス内の関数を矢印関数として定義する必要があるのはいつですか?

  4. 4

    ストリームを使用する必要があるのはいつですか?

  5. 5

    プリプロセッサを使用してCで関数を定義するのはいつですか?

  6. 6

    いつreactのイベントリスナーで無名関数を使用する必要がありますか?

  7. 7

    invokeCFClientFunction()関数を使用する必要があるのはいつですか?

  8. 8

    Javascript:すでに外部関数を使用しているのに、自己呼び出し無名関数を定義する必要があるのはなぜですか?

  9. 9

    ジェネリックを使用して型間の関係を定義する必要があるのはいつですか?

  10. 10

    別の関数で定義されたサブ要素を使用する必要があります

  11. 11

    変数を使用して特定のサブリストからランダムに選択された値を削除して、削除する必要のあるランダムな値を定義するにはどうすればよいですか?

  12. 12

    エラー:PostgreSQL9.3を使用するdblinkの関数には列定義リストが必要です

  13. 13

    多数のゲスト実行可能アプリケーションを使用するクラスターのサービスファブリック配置/負荷分散構成で設定する必要があるしきい値は何ですか?

  14. 14

    テンプレート関数でtypenameを使用する必要があるのはいつですか?

  15. 15

    未使用の仮想関数を定義する必要があるのはなぜですか?

  16. 16

    テストでTestEntityManagerを使用する必要があるのはいつですか?

  17. 17

    プリプロセッサディレクティブを使用してC ++で関数を定義するのはいつですか?

  18. 18

    サブクラスのすべての関数をスーパークラスで定義する必要がありますか?

  19. 19

    array()を使用して配列を定義する必要があるのはいつですか?

  20. 20

    Typescriptの定義。クラスを動的にする必要があるのはいつですか?

  21. 21

    関係を定義するときに流暢なAPIを使用する必要があるのはいつですか

  22. 22

    Z3で変数の代わりに関数を使用する必要があるのはいつですか?

  23. 23

    リストを作成するには、ユーザー定義関数を使用する必要があります

  24. 24

    複数のコンストラクターを使用する必要があるのはいつですか?

  25. 25

    ES6の矢印関数でreturnステートメントを使用する必要があるのはいつですか

  26. 26

    SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

  27. 27

    迅速。特定のデータ型でオブジェクト/値を定義する必要があるのはいつですか

  28. 28

    関数内の関数と個別のプライベート関数を使用する必要があるのはいつですか?

  29. 29

    TypeScriptでリターン関数型を宣言する必要があるのはいつですか?

ホットタグ

アーカイブ