バリケンのPython日記 RSSフィード

2008-06-30

[] 変数  変数 - バリケンのPython日記 を含むブックマーク はてなブックマーク -  変数 - バリケンのPython日記  変数 - バリケンのPython日記 のブックマークコメント

変数とは何か」については、以前『Rubyの「変数」再考』というエントリを書いたから、そちらを参照してね。『変数は「オブジェクトに貼り付けるラベル」』という考え方は、RubyPythonも同じだよ。

代入文

Pythonで値を変数に代入するには、代入文「変数名 = 値」を使うよ。この間のエントリでも書いたけど、代入文は「文」だから値を返さないよ。

>>> width = 20
>>>

ちなみにRubyだと、代入時に値を返すよ。RubyPythonの思想の違いの一端が見えるねえ。

C:\ruby>irb
irb(main):001:0> width = 20
=> 20
irb(main):002:0> exit
C:\ruby>

複数の変数に一気に同じ値を代入したいときは、「変数名1 = 変数名2 = 変数名3 = ... = 値」のように書くよ。

>>> x = y = z = 0
>>> x
0
>>> y
0
>>> z
0
>>> 

変数を評価すると代入値が返る

変数を評価すると、評価した時点でその変数に代入されている値が戻り値として返るよ。

>>> width = 20
>>> height = 5 * 9
>>> width
20
>>> height
45
>>> width * height
900
>>> 

Pythonの対話モード(Pythonシェル)では、直前の評価結果が「_」という変数に代入されるよ。

>>> 100
100
>>> _
100
>>> a = 200
>>> _
100
>>> a
200
>>> _
200
>>>

くどいようだけど、「a = 200」は「文」だから戻り値がないよ。だから、「a = 200」としたあとでも「_」に代入された値に変化がなかったんだね。

あと、Pythonシェルの起動直後は「_」には何も代入されていないから、評価するとエラーになるよ。

C:\Python25>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> _

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    _
NameError: name '_' is not defined
>>> 

再代入

それから、Python変数は再代入することができるよ。再代入のとき、もともと代入されていた値とは異なる型の値を代入することもるよ。

>>> a = 1
>>> a
1
>>> a = 2
>>> a
2
>>> a = "Hello!"
>>> a
'Hello!'
>>> 

以前のエントリでも出てきたけど、「1」や「2」はint型、「"Hello!"」はstr型だったよね。

トラックバック - http://python.g.hatena.ne.jp/muscovyduck/20080630