[Python] "1."は、浮動小数点数である。

結論

Pythonでは、数値がピリオド"."で終了する場合、その数値は浮動小数点数になります。

>>> 1.
1.0
>>> type(1.)
<type 'float'>

捕捉

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にまとめてありますので、併せてご参照下さい。