Python ドキュメントの関数シグネチャの形式は少しわかりにくいです。コンマを開き括弧の前ではなく後に置くことの意味は何ですか? 括弧を入れ子にすることの意味は何ですか?
彼らはどのように:
RegexObject.match(string[, pos[, endpos]])
次のいずれかを期待します。
RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])
Python ドキュメントの関数シグネチャの形式は少しわかりにくいです。コンマを開き括弧の前ではなく後に置くことの意味は何ですか? 括弧を入れ子にすることの意味は何ですか?
彼らはどのように:
RegexObject.match(string[, pos[, endpos]])
次のいずれかを期待します。
RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])
角括弧は内容がオプションであることを意味しますが、角括弧の外側はすべて必須です。
あなたの表記で:
RegexObject.match(string, [pos], [endpos])
私は書く必要があると思います:
r.match("foo",,)
3 番目のパラメーターを指定すると、オプションのパラメーターであっても 2 番目のパラメーターも指定する必要があるため、ネストが必要です。次のネストされていない代替案はあいまいです。
RegexObject.match(string[, pos][, endpos])
左括弧はオプションの引数を示します。カンマが括弧の外側にある場合は、引数を使用したくない場合でも入力する必要がありpos
ます (たとえば)。
それ以外の場合、引数を無視している場合でも、正しい構文はコンマを含めることになるためです。角括弧内の部分はオプションであるため、カンマを角括弧の外に移動すると、オプションではなくなります。たとえば、以下の関数を文字列のみで呼び出すには:
RegexObject.match(string, [pos], [endpos])
私はしなければならないでしょう:
RegexObject.match("foobar",,)
しかし、それはあまりエレガントではありません。
引数リストのすべてのオプション コンポーネントを括弧で囲んでいると考えると、より理にかなっています。基本的に、括弧内はすべてユーザーの裁量で省略できます。
括弧は、それらの間の部分を省略できることを意味します。したがって、ドキュメントがあなたが提案する方法で書かれている場合、すべてを括弧に入れて RegexObject.match(string,,) を書くことができることを意味します。または RegexObject.match(string,,endpos) で 2 番目のものを省略します。しかし、あなたはできません。endpos を省略する場合は、その前のコンマも省略する必要があります。また、pos を省略する場合は、その前のコンマと endpos を省略する必要があります。ですから、それが明確になるように書かれています。