Python

sys.exitとシェルのリターンコード

Pythonのsys.exitという、プロセスを終了させる関数を使ったときにちょっとはまりました。 シェルでリターンコード0は正常終了、それ以外は異常終了 シェルの慣習として、0が正常で、0以外は異常というルールがあります。 但し、0-127の間にない数を使うとこ…

with文はカンマ区切りで複数のコンテキストマネージャを渡せる

これ知りませんでした。 Python2.7からはwith文にカンマ区切りで複数のコンテキストマネージャを渡すことが出来て、with文のネストを1行で書けるらしいです。http://www.python.jp/doc/release/reference/compound_stmts.html#withここにある通り、 with A()…

logging.disableで一時的にログ出力を抑制する

テストコードを実行するときファイルやコンソールにログを出したくない テストコードを実行するときにファイルやコンソールにログを出力するととても邪魔くさく感じることが多いです。 ファイルに出力される場合は放っておけばいいけど、コンソールにログを…

loggingのログレベルについて

pythonのloggingはLoggerとHandlerの両方にログレベルを指定できるのはなぜなんだろうと思って調べた。http://www.python.jp/doc/nightly/library/logging.html#id4リファレンスマニュアルにちゃんと説明が書いてある。 Handler.setLevel() メソッドは、 ロ…

コメントとdocstring

1ヶ月後でも読めるソースコードの書き方 - 何気に大変 この記事の中で、「読みやすいコード」の要件として「コメントが少ない」というのがあってちょっと気になりました。 役に立たないコメントを残すと後々害になる 結論としては、言っていることは妥当で、…

contextlibとか__import__とかfunctoolsとか

Temporary substitution of object in modules via with statement « Python recipes « ActiveState Code Active StateのPython Recipesですごく勉強になるレシピを見つけた。 これは、with文で任意のモジュールの属性を一時的に書き換えてしまう例。このレ…

pep8とpyflakesのvimプラグインを入れた

pythonのプログラムを書いているとき、pep8とpyflakesはかけておきたいと思うことがあります。 pep8はあくまで形式を規格化したものだけど、これを守れというモヒカンはけっこう多いようです。 pyflakesは使っていない変数とかインポートを検出して指摘して…