いまさらなpythonのメモ

仕事と関係ないことをしていないということは、仕事以外していないということと同じである。そんな人生はいやだ。というわけで、ルータやスイッチから離れてpython書いてるときなどは「motieはIT屋でありかつ仕事中でない」が成り立つ貴重な瞬間。

まえに大学のサーバに上げていたwikiのメモ書きを書き直して上げていこう*1。

*1:いろいろとやってたら各記事が個別のタイトルになってしまった。リンクで飛ぶにはまず日付リンクを踏まなきゃいけない仕様に。wikiの代わりにするのはなかなか難しい。

続きを読む

はてなダイアリーのsyntax highlight

pythonとは直接関係ないケド、はてなダイアリーはシンタックスハイライトの機能を実装している。


>|python|
# -*- coding: utf-8 -*-
def main():
print "hello, spam!"
return 1

if __name__=="__main__":
import sys
sys.exit(main())

<

どれどれ

# -*- coding: utf-8 -*-
def main():
    print "hello, spam!"
    return 1

if __name__=="__main__":
    import sys
    sys.exit(main())

おお、できた。

The Zen of Python, by Tim Peters

pythonをインストールしたらまずおもむろにimport thisするべし*1。


>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
(きたないのよりきれいな方がいい)
Explicit is better than implicit.
(ごちゃごちゃ難しいのより、白黒はっきりしてるのがいい)
Simple is better than complex.
(めんどうなのよりかんたんな方がいい)
Complex is better than complicated.
(けど、訳分かんなくなるくらいならめんどうな方がまし)
Flat is better than nested.
(ネストさせなくていいならしない方がいい)
Sparse is better than dense.
(たくさん詰め込んだのよりスカスカな方がいい)
Readability counts.
(読みやすさがたいせつなのよ)
Special cases aren't special enough to break the rules.
(特別なこともあるけど掟破りってほどじゃない)
Although practicality beats purity.
(実用性を求めてくと、ちょっとはずれちゃうこともあるけどね)
Errors should never pass silently.
(エラーをだまって通すようなことがあっちゃいけません)
Unless explicitly silenced.
(わざとそうしてるんじゃない限り)
In the face of ambiguity, refuse the temptation to guess.
(あいまいなことをてきとーに処理しちゃいけません)
There should be one-- and preferably only one --obvious way to do it.
(間違えよと分かりにくかったりしてもね)
Now is better than never.
(やらないよりは今やるべき)
Although never is often better than *right* now.
(けど今「すぐ」やるならやんない方がいいこともある)
If the implementation is hard to explain, it's a bad idea.
(作るものをうまく説明できないようならそれはボツ)
If the implementation is easy to explain, it may be a good idea.
(うまく説明できたらたぶんそれがグッド)
Namespaces are one honking great idea -- let's do more of those!
(ぶらぼーなアイディア名前空間、やっぱこれですね)

*1:和訳部はhttp://www.python.jp/Zope/articles/misc/zenより。

japがまずはじめにすべきこと(sitecustomize.pyの編集)

pythonの言語設定をutf-8とかにします(必須ではないけど文字コード処理で手を抜けるのでやっておいたほうがいいと思われる)。まずpython -vでどのディレクトリのライブラリが読まれているか調べる。


~ $ python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/lib/python2.5/site.pyc matches /usr/lib/python2.5/site.py
(以下略)

この例では/usr/lib/python2.5が読まれているらしいので、その下のsite-packages以下にsitecustomize.pyというファイルを作りutf-8をデフォルトで使用するようにする。(windowsだとc:\python25\lib\site-packages\sitecustomize.pyみたいなファイルになると思います)たとえばrootで以下のコマンドを打つ。

localhost ~ # echo "import sys; sys.setdefaultencoding('utf-8')" > /usr/lib/python2.5/site-packages/sitecustomize.py

あるいは以下の内容を/usr/lib/python2.5/site-packages/sitecustomize.pyへ書き込む。

import sys
sys.setdefaultencoding("utf-8")

インタラクティブシェルから以下のような結果を得られればOK。

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'