1

それで、しばらく検索しても何も見つからなかったので、SOの専門家に相談して、何が起こっているのかを明確にすることにしました。

私はPythonを学んでおり、正規表現について学んでいるときに、理解できない興味深い構文に出くわしました。この例では、入力パラメーターで正規表現を実行し、整数の一致をfloatとして返すか、入力が数値のように見えるものと一致しない場合に例外をスローする関数が定義されています。

import re
def getNumber(token):
  r'-?[1-9][0-9]*.?[0-9]*'
  return float(token)

この関数は次のように呼び出すことができます。

print getNumber('123.123')
print getNumber('123.123')+40

これは出力します:

123.123
163.123

私はこれがどのように起こっているのかというメカニズムを理解しようとしています。r'STRING'の呼び出しで正規表現オブジェクトを宣言していることは理解していますが、どういうわけか、正規表現を宣言すると、トークンパラメータも式に渡されます。これは、「トークン」と呼ばれるパラメーターを明示的に含む関数を持つ特性ですか?複数のパラメータに関連する動作はありますか?確かに、ここではpythonic構文を提供するためにいくつかの作業が行われているようです。それがどのように機能し、将来どのように使用するかについて詳しく知りたいと思います。この件については何も見つからなかったので、ドキュメントを紹介するのは素晴らしいことです。

4

1 に答える 1

5

この関数は、入力に対して正規表現を実行していません...float入力を浮動小数点数に変換している入力を呼び出しています。関数に存在する「正規表現」は、docstringにすぎません。

r"this is a string"正規表現とは関係のない「生の文字列」を作成するだけであることに注意してください("\t"はタブr"\t"ですが、はリテラル文字'\''t')です。

于 2012-09-11T15:46:42.007 に答える