質問: row.search('I have 2000 yen') print(result) # ``` コンパイルというのを初めて聞いたので、調べてみると機械語に翻訳することだと知りました。 また、pythonはコンパイラ型言語ではないので、コンパイルする必要がなく、一行ずつ翻訳するらしいです。 今回のre.compileは正規表現をあらかじめコンパイルするということで、 re.search(r'\d+', 'I have 2000 yen')と本来は書くところを row.search('I have 2000 yen')と短縮して書くことができる。 re.compileはpatternをコンパイルすることで処理する速度が早くなるというのがメリットであり、\d+というpatternを多く使うなら あらかじめコンパイルしておくことで処理速度が早くなる。だから、別に多く使わないならre.compileを積極的に使う必要はない。 上記のように理解したのですが、コンパイルというのを初めて聞いたので、確認のため質問させていただきました。 mac 10.14.1 visual studio code
回答: コンパイルというのは、機械語に翻訳するだけではありません。 一般には、「文字列(文字列データや、文字列で書かれたプログラム)を内部表現に変換すること」でしょうか。 端末から数字を入力して、その値をループの中で使う場合、入力した数字の文字列を、ループの中で毎回`int()`して使うのと、ループの前に`int()`して変数に代入し、ループの中ではその変数を使うのとでは、ループの回数が膨大な場合に、実行時間に差が出ます。100回、1000回くらいだと、あまり差は無いかと。 それと同じようなことです。 (数字文字列を数値に変換することは、あまり「コンパイル」とは言いませんが)