Python

Python 修行

Python に手をつけてみました。
とりあえず本家のチュートリアルベースに勉強しながら忘れそうなことをメモしていくことにします。
・Python Tutorial
http://docs.python.org/tut/tut.html

– Mac OS X の Python
Mac OS X は標準で Python がインストールされてます。

$ py[tab]
pydoc pydoc2.4 python2.3 pythonw
pydoc2.3 python python2.4 pythonw2.3
$ whereis python
/usr/bin/python
$ ls -la /usr/bin/python
lrwxr-xr-x 1 root wheel 9 May 1 2005 /usr/bin/python -> python2.3
$ python2.3
Python 2.3.5 (#1, Feb 19 2006, 00:26:06)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit
'Use Ctrl-D (i.e. EOF) to exit.'
>>> ^D
$ python2.4
Python 2.4.2 (#1, Feb 18 2006, 23:37:11)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

どうやら Python2.3.5 / 2.4.2 がインストールされていて、python は python2.3 へリンクが張られてるらしい。

というわけで 2. Using the Python あたりを実践。

– Python の実行方法
・インタラクティブモード
コマンドラインから python とうつだけ

$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello"
hello
>>> ^D

・ファイルに保存して

$ cat hello.py 
print "hello"
$ python hello.py
hello

・直接実行

$ cat hello.py 
#! /usr/bin/env python
print "hello"
$ chmod +x hello.py
$ ./hello.py
hello

– エンコーディングの指定方法

$ cat hello.py 
#! /usr/bin/env python
# -*- coding: Shift_JIS -*-
print "こんにちは"
$ ./hello.py
File "./hello.py", line 2
SyntaxError: 'unknown encoding: Shift_JIS'

そんなエンコーディングは知らないとエラーがでた。
“SyntaxError” ってのはなんかニュアンスがおかしいけど・・。
調べてみるとJapaneseCodecsっていうパッケージ(?)が必要らしい。
日本語環境でのPython (for Python 2.3 or later)
Python2.4 ではデフォルトで含まれているそう。
また、エンコーディングの指定はもうちょっとシンプルに、
# coding: エンコーディング名
で良いらしい。
使えるエンコーディングの一覧はこちら
http://docs.python.org/lib/standard-encodings.html

というわけで Python2.4 で動かしてみる。

$ cat hello.py 
#! /usr/bin/env python
# -*- coding: shiftjis -*-
print "日本語"
$ python2.4 hello.py
Bus error

バスエラーが発生。なんとなく euc にしてみたら・・

$ cat hello.py 
#! /usr/bin/env python
# -*- coding: eucjp -*-
print "日本語"
$ python2.4 hello.py
日本語

動いた。