Python入門してみた。

さくらインターネット, XREA.COM, LightWeight Language, Python

08:47:17, by admin Email , 259 words, 4861 views   Japanese (JP) del.icio.us

他の言語をやってみて、ようやく見えるものもあるな。

(ノ・・)ン。。。。。。(((●コロコロッ

何となくだが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は相変わらず少ないまま。
いろいろ読んでみたが、
これが一番いい気がする。
みんなのPython
みんなのPython
posted with amazlet on 07.11.10
柴田 淳
ソフトバンククリエイティブ (2006/08/22)
売り上げランキング: 25306
おすすめ度の平均: 3.5
4 Pythonは使いやすそう
2 「初めてのPython」の焼き直し
5 日本人によって日本語で書かれたPython入門書





このぐらいやっておけば取りあえずPython初心者にはなれたかな。
初心者マークを付けて街を歩けそうだ。



●ちょっとした疑問
CGI全般に言えるが、
インタプリタ行に記述する方法で
#!/usr/bin/env python
とするのか
#!/usr/local/bin/python
とするのかどっちが最適なんだろう。

この記事は汎用性を考えて前者にしているが、
私の実利用は後者だったりする。
コマンドライン引数が使えるのが大きい。
(envだとコマンド直打ちの時はコマンドライン引数が使えるのだが、
スクリプト記述した時は使えないっぽい。
記述にミスでもあるのかな)




Trackback address for this post:

http://hain.jp/htsrv/trackback.php/185

Comments, Trackbacks:

No Comments/Trackbacks for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites
PR

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!