読者です 読者をやめる 読者になる 読者になる

Python

DjangoからGmail経由でメール送信する際の手順

Python+Djangoでの開発時にプログラムからメールを送信する際に設定すべきことがいくつかあるので、まとめておきます。(ほぼ自分用の備忘録ですが。) Djangoとか関係なしにプログラムからGmail経由でメールを送信したいだけの方は下記の1と2のみ実施すれば…

mapと内包表記の速度の差について

リストに対して何らかの処理をする場合色々な方法があります。それらの速度について勘違いしていたことがあり、@mopemope氏からもご指摘をいただいたので、まずは何も言わずに下記のコードを実行してみます。 import timeit N = 200 target = range(N) def f…

PEP8について

PEP8はPythonが目指している「誰が書いても可読性の高いソースコードにする」という崇高な目的のために非常に有意義なものですが、これじゃまだ足りていないように思います。「こういう場合ってどう書けばいいの?」という純粋な疑問があるので、皆さんに考…

継承時のクラス名について

下記のコードの出力結果に一瞬あれっ?ってなったけど、全然不思議なこともないからこのエントリはただの独り言です。(終了) class Base(object): @classmethod def func(cls): print '親分 %s' % cls.__name__ class Derive(Base): @classmethod def func…

__getitem__の挙動についてメモ

まず、以下のコードを実行するとどうなるでしょうか。 class Test(object): def __getitem__(self, x): print 'KEY = [%s]' % x a = Test() print 'hoge' in a これが意味のあるコードかどうかは置いといて、この問いに即答できなかったので反省の意味を込め…

関数の呼び出し元のファイル名と行番号

開発中に関数の呼び出し元のファイル名・行番号を知りたくなることがあります。例えばエラーの際に開発者にメールを送ることにして、そのメールがどのファイルのどこから送信されたものかを知りたい時などがそれにあたります…と言っても言葉だけでは伝わりづ…

PILで高画質なjpegを出力する

PIL(Python Imaging Library)を利用して以下のようなコードを書くと、モアレが出てしまって画質の粗悪なjpgが出力されてしまいます。 import Image img = Image.open('input.png') img.save('output.jpg') そこでjpgの画質をコントロールできないものかと /s…

4つの数字で10を作るゲーム解説

皆さんもきっと昔一度はやったことがあるかと思います。車のナンバープレートや切符に書かれた4桁の数字と四則演算のみを使って10を作るゲームを。スイカやパスモの普及率が高くなってからこのゲームが絶滅してしまうのではないかと冷や冷やしていましたが、…

itertoolsメモ

Python2.3から標準に組み込まれている itertools というモジュールが、Pythonのマイナーバージョンに大きく依存しているので忘れないようにメモしておきます。(あくまで自分用) 詳細を知りたい方は http://docs.python.org/library/itertools.html を御覧…

間違い探し

さて、以下のPythonコードを実行すると 何が出力されるでしょうか? x = ( ('Kawasaki', 28), ('Yamada', 25), ('Tanaka', 32), ('Tom', 18), ('Mark', 21), ('Bill', 46), ) print len(x) 簡単ですね、答えは 6 です。 では次はどうでしょう。 x = ( ('Kawa…

配列の初期化での注意

Pythonで1次元の配列を生成する場合、 x = [0 for i in xrange(5)] print x とすると [0, 0, 0, 0, 0]という出力が得られます。 しかしこれを x = [0] * 5 print x とすると、実はかなり高速になります。 以下のようなコードで速度を計測してみると、 import…

シリアライズ関数

ふとしたことでシリアライズすることになったのですが、 つい横柄して以下のようなコードを書いたらまともに動きませんでした。 import pickle class Sample(object): def __init__(self, value): self.value = value def save(self, fname): pickle.dump(se…