help() がメソッドシグネチャをリストしているときのスラッシュは何を意味しますか? 質問する

help() がメソッドシグネチャをリストしているときのスラッシュは何を意味しますか? 質問する

/Python 3.4 のhelp出力におけるrange閉じ括弧の前の はどういう意味ですか?

>>> help(range)
Help on class range in module builtins:

class range(object)
 |  range(stop) -> range object
 |  range(start, stop[, step]) -> range object
 |  
 |  Return a virtual sequence of numbers from start to stop by step.
 |  
 |  Methods defined here:
 |  
 |  __contains__(self, key, /)
 |      Return key in self.
 |  
 |  __eq__(self, value, /)
 |      Return self==value.

                                        ...

ベストアンサー1

それは、位置のみのパラメータ、キーワード パラメータとして使用できないパラメータ。Python 3.8 より前では、このようなパラメータは C API でのみ指定できました。

keyこれは、引数がキーワード引数 ( )としてではなく、__contains__位置引数 ( ) によってのみ渡されることを意味します。これは、純粋な Python 関数の位置引数で実行できることです。range(5).__contains__(3)range(5).__contains__(key=3)

以下も参照議論クリニックドキュメンテーション:

Argument Clinic ですべてのパラメータを位置のみとしてマークするには、/最後のパラメータの後に、パラメータ行と同じインデントで 1 行だけ追加します。

そして(ごく最近追加された)Python よくある質問:

関数の引数リスト内のスラッシュは、その前のパラメータが位置のみであることを示します。位置のみのパラメータは、外部で使用可能な名前がないパラメータです。位置のみのパラメータを受け入れる関数を呼び出すと、引数は位置のみに基づいてパラメータにマッピングされます。

この構文は現在Python言語仕様の一部となっている。バージョン3.8以降、 見るPEP 570 – Python の位置のみのパラメータPEP 570より前に、この構文はPythonに将来組み込まれる可能性に備えてすでに予約されていました。PEP 457 -位置指定のみのパラメータの構文

位置のみのパラメータを使用すると、API がよりクリーンかつ明確になり、C のみのモジュールの純粋な Python 実装の一貫性が高まり、保守が容易になります。また、位置のみのパラメータでは処理がほとんど必要ないため、Python コードが高速になります。

おすすめ記事