2008年4月21日月曜日

pythonブートキャンプ4日目

HeadFirstのオブジェクト指向分析設計を買いました。
例題をpythonで書き直したりしつつ進めていきたい。
その前にチュートリアルを終わらせなければ!っということで4日目。

前回に続いてチュートリアルやってきます。
まだまだなぞってるだけなので参考にならないかも><
でも、初心者がつまずくところを挙げれればと。


ちょっとチュートリアル入る前に前回最後に言及した
ドキュメントの見かたを調べたのでどぞ。
パイソンのドキュメントはpython.exeの入っているフォルダのDocってとこに入ってます。
windows版だとPython25.chmが入っていました。
当然英語ですが、ネットで探せば日本語版も落ちてます。
http://www.python.jp/doc/nightly/
とりあえず、簡単に各項目の説明を。
・Tutorial - チュートリアル
・What's New in Python - 最新版の変更点
・Global Module Index - 索引
・Language Reference - 言語仕様
・Library Reference - 各クラスの機能
・Extending and Embedding - C/C++プログラマのためのチュートリアル
・Macintosh Module Reference - マック用
・Python/C API - C/C++プログラマ向けのリファレンス
・Installing Python Modules - 管理者向け
・Documenting Pyhon - ドキュメントの著者について
・Distributing Python Modules - 開発者とパッケージャーについて
・Documentation Central - ネット上のドキュメントの最新版が見れます
・Python How-To Guides - ネット上のハウツー

ん!?C用のチュートリアルとかあるんだ・・・Cが組み込めるの?Cに組み込めるの?
Javaしか知らない僕にはとりあえずは関係なさそうかな?
で、自分が見たかったJavaのAPIのようなのはLibrary Referenceで見れました。
チュートリアルで少し触ったStringクラスのメソッドについては
3.6.1のString Methodsに詳しく載っています。
Javaのように1ページに説明からクラスメンバーまで全部載せるんじゃなくて
別になっているようです・・・すごい違和感。慣れって怖いなぁ><


それじゃ~チュートリアルへ。
今日は3.1.3 Unicode 文字列から。

Unicode文字列の作成


>>> u'Hello!!'
u'Hello!!' #出力に小文字のuがついてたらUnicode
>>> u'Hello\u0020!!' #\uでユニコードをそのまま使える
u'Hello !!'


Unicodeのrawモードは'ur'
rawモードはエスケープを無効に。ただしこの場合Unicodeは変換される。
http://aheadonestep.blogspot.com/2008/04/python.html

word = ur'Hellow\u0020!!\n world'
print word
Hellow !!\n world #ユニコードは変換されてるけど\nは変換されてない


最初間違って'ru'ってつけててエラーに。エラー表示は
SyntaxError: invalid syntax
最初何が間違ってるのかわかんなかった・・・。
エラー処理しっかりしてるってドキュメントに書いてる割に表示は微妙だ・・・。


組み込み関数unicode()はUnicodeへエンコードおよびデコードするための使える。
Unicodeの印字やファイル書き出しstr()の変換はデフォルトはASCII
Unicode文字列.encode()で8ビット文字に変換(普通の文字列とは違うので注意!!
.encode('[エンコード型]')エンコード型は小文字推奨


str(u"あいう") #これはASCIIに変換できないのでエラーとなる

u"あいう".encode('utf-8') #utf-8形式に変換
"あいう".encode('utf-8') #デフォルトはASCII型なのでできないとエラーになる

unicode('hentai', 'utf-8') #Unicodeへ変換


文字列はここでとりあえず終わりのようですね。
Webサービスを作ってみたいと思っている身としては文字列の扱いには
慣れておかないといけませんね。あとは通信系か。


3.1.4 リスト

リストはカッコ内にカンマで区切って宣言。シンプル!
インデクスはもちろん0からで文字と同じように[]で。スライスも使える。
→文字列のスライス


list = ['hello','Hentai',4]
print list
['hello','Hentai',4]

print list[1]
Hentai
print list[1:]
['Hentai',4] #単一だと中身で複数だとちゃんとリストの切り出しなのがすごい


文字列型は変更不可でしたがリストはここの要素を変更できる
スライスの代入を行うことでサイズ変更もでき要素の除去や挿入ができる。
文字列型と同じようにlen()でサイズもみれる。
#これはlist.len()じゃないとオブジェクト志向とは言えないよねー


list = ['hello','hentai',200,4649]
list[1] = 'do' + list[1]
print list[1]
dohentai

list[:2] = [] #最初の二つの要素を除去
print list
[200,4649]

list[0:1] = ['hentai','hello'] #最初に挿入
print list
['hentai','hello',200,4649]

list[0] = ['hentai', 'hello'] #要素指定だとそれがリストに入れ替わる
print list
[['hentai', 'hello'],'hello',200,4649]

list[0:] = ['hentai','hello'] #0以降なので全部入れ替わる
print list
['hentai', 'hello']

list = ['hello','hentai',200,4649]
print len(list) #要素数の表示
4


リスト内リストのとこで参照の話が触れる程度でてきます。
Javaは参照だらけなのでこの辺の考えは大丈夫。

次からようやく各種構文が出てきてプログラミングらしくなりそう!

0 件のコメント: