他の言語をやってみて、ようやく見えるものもあるな。
(ノ・・)ン。。。。。。(((●コロコロッ
何となくだが
PHPユーザーは
Pythonの相性が良いような気がする。
文法がJavaScriptと似ているので、
Webやっている人は取っつき易いかもしれない。
このチュートリアルをこなせばおおよそ使えるようになると思う。
http://docs.python.org/tut/tut.html
(Python独自のなにかがあるのなら別だが)
動作もさすがに安定していて、
PHPみたいに__setが・・・__getが・・・autoloadが・・・みたいなことは今のところ無い。
Python3.0もalpha版がリリースされたようで、
Rubyと同様、今後が楽しみ。
pythonコマンドだけ打つと使えるインタラクティブモードはかなり便利だ。
$ python
Python 2.4.3 (#2, Nov 7 2006, 13:07:47)
[GCC 3.4.4 [FreeBSD] 20050518] on freebsd6
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.write('test')
test
>>>
対話型のプログラミング実行環境。
コードを一つ一つ書いていくと即座に状態がわかる。
小さなプログラムやコンポーネントの動作テストをするのに便利。
いちいちファイルを作成する必要がない。
デフォルトコンポーネントの作りもしっかりしていて、
PHPで良く作成した
ラッパークラスがほとんどいらない。
例えばXMLRPCを使おうと思った時は、
import xmlrpclib
api = xmlrpclib.Server( 'http://api.hain.jp' )
result = api.method.name({'word':['hoge']})
とするだけでデータが取得出来ている。
PEAR::XML_RPCをインストールしてラッパークラスを作って・・・ってのが不要。
あのAPIにこんなデータを渡して・・・ってのだけ考えればいい。
エラーは例外で共通化されいるので、
includeでWarningが出た時どうすれば・・・なんてのもない。
クラスや関数の定義を確認する方法にhelp関数というのがある。
標準のコンポーネント、自前のクラス・関数もすべてこれで確認出来るのが便利だ。
PHPで言うところのReflectionクラス。
$ python
>>> class testclass:
... def testfunction():
... print 'hoge'
...
>>> help( testclass )
Help on class testclass in module __main__:
class testclass
| Methods defined here:
|
| testfunction()
>>>
まぁもちろん言語それぞれハマリどころがあるだろうから。
はまった時点で愚痴っぽく記事にするとしよう。
このブログはメインがPHPなので、
なるべくPHPerに解るように書いていこうとは思う。
なんだかんだで楽しく遊んでいるように見えるが、
動かすまでには結構苦労した。
その辺をだらだらと書いてみようかと。
使用しているサーバは
Xrea.com。
しかし、
さくらインターネットなどの共用レンタルサーバなら大抵同じだと思う。
[More:]
●
PythonをCGIで動かす
PHPはphpinfo書けば何も考えず動くが、
通常のCGIはそうはいかないらしい。
基本拡張子は.py。
ソースコードはUTF8で書く。
.htaccessに
DirectoryIndex index.py
AddHandler cgi-script .py
index.pyに
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
sys.stdout.write('Content-type: text/html; charset=UTF-8')
sys.stdout.write('\r\n\r\n')
sys.stdout.write('Python Test')
と記述。
実行属性を追加しておく。
$ chmod 755 index.py
ブラウザからindex.pyにアクセスする。
Content-typeを忘れるとScript Errorとだけでる。
激ハマリ。
●サーバ情報の取得
PHPINFOみたいなものは今のところ見つかっていないが、
PHPでいうと$_SERVERや$_ENVは一覧で見られるようだ。
とりあえずPythonを動かして、
サーバの状態を確認するにはこれを使うのが良いかもしれない。
cgitest.py
#!/usr/bin/env python
import cgi; cgi.test()
●デバッガを追加
CGIで何かをしようとすると、
スクリプトにエラーや例外が発生した時、
SCRIPT ErrorとかInternal Server Errorとだけ表示されて、
デバッグが異常にやりにくくなる。
それを回避するためにいろんな方法を使うようだが、
一番簡単に利用出来るのがcgitbコンポーネント。
スクリプトの頭の方で書いておくとエラーがあった時に画面に表示してくれる。
cgitb.py
#!/usr/bin/env python
import cgitb; cgitb.enable()
raise Exception('exception test')
●コンポーネントの利用
ライブラリとかモジュールという呼び名よりコンポーネントの方がいいのかな。
おおよそのコンポーネントに共通するインストール方法。
展開したファイルにsetup.pyというインストーラがあり、
それを使ってインストールを行う。
インストール先を[/virtual/hain/local]とすると
$ python setup.py install --prefix=/virtual/hain/local
PHPでいうPEAR, RubyでいうRubygemsのようなものにeasy_installというのがある。
PyPIというリポジトリがあって、
そこに登録されているコンポーネントが簡単に利用出来る。
あると便利なので併せてインストールしておくと良い。
インストール方法は過去記事をどうぞ。
●初心者本
Pythonの書籍はRubyと並んで結構少ない。
RubyはRuby on Rails人気で最近増えてきているが、
Pythonは相変わらず少ないまま。
いろいろ読んでみたが、
これが一番いい気がする。
柴田 淳
ソフトバンククリエイティブ (2006/08/22)
売り上げランキング: 25306
おすすめ度の平均:


Pythonは使いやすそう

「初めてのPython」の焼き直し

日本人によって日本語で書かれたPython入門書
このぐらいやっておけば取りあえずPython初心者にはなれたかな。
初心者マークを付けて街を歩けそうだ。
●ちょっとした疑問
CGI全般に言えるが、
インタプリタ行に記述する方法で
#!/usr/bin/env python
とするのか
#!/usr/local/bin/python
とするのかどっちが最適なんだろう。
この記事は汎用性を考えて前者にしているが、
私の実利用は後者だったりする。
コマンドライン引数が使えるのが大きい。
(envだとコマンド直打ちの時はコマンドライン引数が使えるのだが、
スクリプト記述した時は使えないっぽい。
記述にミスでもあるのかな)