7

Python ドキュメントの関数シグネチャの形式は少しわかりにくいです。コンマを開き括弧の前ではなく後に置くことの意味は何ですか? 括弧を入れ子にすることの意味は何ですか?

彼らはどのように:

RegexObject.match(string[, pos[, endpos]])

次のいずれかを期待します。

RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])
4

5 に答える 5

19

角括弧は内容がオプションであることを意味しますが、角括弧の外側はすべて必須です。

あなたの表記で:

RegexObject.match(string, [pos], [endpos])

私は書く必要があると思います:

r.match("foo",,)

3 番目のパラメーターを指定すると、オプションのパラメーターであっても 2 番目のパラメーターも指定する必要があるため、ネストが必要です。次のネストされていない代替案はあいまいです。

RegexObject.match(string[, pos][, endpos])
于 2010-01-22T21:08:59.167 に答える
2

左括弧はオプションの引数を示します。カンマが括弧の外側にある場合は、引数を使用したくない場合でも入力する必要がありposます (たとえば)。

于 2010-01-22T21:09:05.233 に答える
2

それ以外の場合、引数を無視している場合でも、正しい構文はコンマを含めることになるためです。角括弧内の部分はオプションであるため、カンマを角括弧の外に移動すると、オプションではなくなります。たとえば、以下の関数を文字列のみで呼び出すには:

RegexObject.match(string, [pos], [endpos])

私はしなければならないでしょう:

RegexObject.match("foobar",,)

しかし、それはあまりエレガントではありません。

于 2010-01-22T21:09:27.353 に答える
0

引数リストのすべてのオプション コンポーネントを括弧で囲んでいると考えると、より理にかなっています。基本的に、括弧内はすべてユーザーの裁量で省略できます。

于 2010-01-22T21:10:52.523 に答える
0

括弧は、それらの間の部分を省略できることを意味します。したがって、ドキュメントがあなたが提案する方法で書かれている場合、すべてを括弧に入れて RegexObject.match(string,,) を書くことができることを意味します。または RegexObject.match(string,,endpos) で 2 番目のものを省略します。しかし、あなたはできません。endpos を省略する場合は、その前のコンマも省略する必要があります。また、pos を省略する場合は、その前のコンマと endpos を省略する必要があります。ですから、それが明確になるように書かれています。

于 2010-01-22T21:11:03.560 に答える