«

»

1月 20

初めてのPython(第二版)を読んだ(4)

やっぱり疲労には睡眠が一番だと思いますが、どうにも時間が取れません。というか、だらだらしてしまうのが一番の原因なんですが…..w
ボールペンのパワータンクを勧められて購入しました。圧力を書けているため、安定して文字をかけます。ハッキリとかけるこのボールペンか、シャーペン(プレスマン)か迷ったのですが、メモを消すことはそこまでないかなと思ってボールペンにしました。
書見台はすごくパフォーマンスが上がりますね。必死に腕で押さえてイライラしていたこれまでがアホみたいですw

関数のデフォルト値が可変性オブジェクトの場合に上書きが発生することがある

>>> def func1(a,b=[1,2]):
...     b.append(a)
...     print b
...
>>> func1(5)
[1, 2, 5]
>>> func1(2)
[1, 2, 5, 2]

こうなっちゃいます。
解決法

>>> def func2(a,b=None):
...     if b==None:
...             b = []
...     b.append(a)
...     print b
...
>>> func2(5)
[5]
>>> func2(5,[1,3])
[1, 3, 5]

なるほど….
これはついつい忘れてしまいそうですね。注意しないと….

reload()

lga128@PC-8:~$ cat script1.py
#coding:utf-8
print 'Hello,world!!'

こんなスクリプトを用意しておきます。

>>> import script1
Hello,world!!

インポートすると、当然実行されます。

>>> import script1

しかし、もういちどインポートしてもバグ防止のために実行されません。

>>> reload(script1)
Hello,world!!

そこで、reload()を使用するとリロードができます。
これだけでなく、スクリプトを常に走らせておく必要があって、絶対に止められない状況で書き換えをしたい時にも最適です。

lga128@PC-8:~$ cat script1.py
#coding:utf-8
print 'Goodby,world!!'
>>> reload(script1)
Goodbye,world!!

Tornadoを使用するときに、いいかもしれません。

exec()

>>> module_name = 'hashlib'
>>> exec 'import '+module_name

めんどくさいので結果は省きますが、exec()を使用すると文字列をステートメントとして実行できますw
すごく便利ですが、多用すると凄まじいコードを生み出しそうなのでできるだけ使わないようにしたいです。

再帰インポートは危険なのでできるだけ使わないほうがいいらしいです。

クラスについて(pp.359~476)は、量がすごかったので一旦飛ばしました。あとでやります。

とりあえず今日のところはこのへんで。また夜に書くかもしれませんが…w たぶんやりません。
THINKメモパッド、気に入ってますが箔押しっていうのは勘違いでした。どっちでもいいですが。表紙はビニールかな?
いやぁ、いい買い物をした。

Permanent link to this article: http://lga128.nekobaka.net/2012/01/haji_py_part4/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Time limit is exhausted. Please reload the CAPTCHA.