[Python] "1."は、浮動小数点数である。
捕捉
id:ksmemo:20070703:p1において、「Rubyで、
>> 1.+(1) => 2
とできる。これは"1"というオブジェクトの"+"メソッドを呼び出したのである。同じことがPythonでもできる」として、
>>> 1.+(1) 2.0
という例が出ています。が、これはおそらく誤解ではないかと思います。Pythonのコードで"1.+(1)"をトークンに分解すると、
- "1.": 浮動小数点数。値は1.0。"."はメソッド呼び出しではない。
- "+": 加算符号。
- "(": 開き括弧。
- "1": 整数。値は1.
- ")": 閉じ括弧。
となると思います。この式のうち、"(1)"は単に整数の"1"を括弧で囲っているだけで、評価後の値は整数の1です。すなわち、上の例は、
>>> 1.0 + 1 2.0
と同じことだと思います。結果が"2.0"と表示されているので、これは浮動小数点数と整数の加算であると思われます。もし整数同士の加算であるならば、
>>> 1 + 1 2
のように、結果は"2"と表示されます。
もしRubyのように、加算をメソッド呼び出しで表現したい場合、以下のようになるでしょうか。
>>> n = 1 >>> n.__add__(1) 2
Pythonのリテラルについては、id:SumiTomohiko:20070606:1181161100にまとめてありますので、併せてご参照下さい。