Python ちゃんとやります。


初めての Python を借りて1ヶ月。
丸めて押入れに押しこんでおいたラグが春夏の間にすっかり型が付いちゃって、ほっとくとくるくる巻き上がる。仕方なく程よい重さのあるこの本に端っこを押さえる役目を与えてきたんだけど、そろそろ平らになってきたのでその任を解こうと思う。

ごめんなさい、これから読みます。

因みにラグの反対側の端っこは、別の方から2年前に借りた DVD を観ずに返そうとしたら返し返されたやつが押さえてます。
うそです、これから観ます。

あと、この本表紙がネズミなんだけど「初めてのチュー」ってことだろうか。
うそです、翻訳本です。

Pythonスクレイピングとかテスト用の画像作成ツールとか便利ツール作るときに見よう見まねで書いてたんだけど、ここらで一から再入門します。

早速 p.80 くらいまで読んだ。

import と from の違い

p.41

import moduleName
print moduleName.attribueName

↑と↓は同意

from moduleName import attributeName
print attributeName

今までコードコピペしてたらどっちもあったし、datetime.datetime() とか気持ちわりいと思ってたけど納得。

変数は全部オブジェクトへの参照

p.55 の演習で、「以下のコードを入力してみてください。」ってあったのでやってみた。

L = [1,2]
L.append(L)
L

無限ループで落ちるかと思いきや、

>>> L=[1,2]
>>> L.append(L)
>>> L
[1, 2, [...]]

何これキモい。[...]何?と思って中身見ようとしたら、

>>> L[2]
[1, 2, [...]]
>>> L[2][2]
[1, 2, [...]]
>>> L[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2]
[1, 2, [...]]

キ・モ・い!しかも速い。
なんでこんなこと出来るかっていったら、Python では変数は全部値のオブジェクトへの参照だからなんじゃないですかね。

L[2] が L を参照してるだけってこと?

試しに値を変更してみる。

>>> L[1]=3
>>> L
[1, 3, [...]]
>>> L[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2]
[1, 3, [...]]

L[2]は L を参照してるので、L[2][2] も L[2]..[2] も同じ内容になる。