Pythonの勉強をした跡

perlで組んでいたcgiとかをpythonで作ってみたのメモ

をすごく偏ったまま書き殴る。

ただし発想は必ずしもperl的ではない。

書き方

インデントはまあいいとして、文の途中で改行するときは\\が必要。

return \
     0.0072*cos(angle)  -0.0528*cos(2*angle)*\
    -0.0012*cos(3*angle)-0.1229*sin(angle)-\
     0.1565*sin(2*angle)-0.0041*sin(3*angle)

fortranの5だったか6文字目だったかにつけるあれを思い出して不愉快である。

リスト

mapとかreduceとかやるよりは

type([x*2 for x in range(1,10,2)]) # -> list (list conprihension)
type((x*2 for x in range(1,10,2))) # -> generator (generator expression)

を使ったほうがいいと関数型プログラミング HOWTO ? Python 2.6.2 documentationに書いてる。

lambdaifが使えないらしい。三項演算子のifは使える。

ジェネレータというのはイテレータ。generator expressionを使うと手軽にイテレータをとれる。こいつをいかに使いこなすかがpythonを楽しむポイントな気がしてならない。

10.7. itertools ? 効率的なループ実行のためのイテレータ生成関数 ? Python v2.6.2 documentation

高度なイテレータ – Dive Into Python 3 日本語版

困ったらdir

>> import datetime
>> dir(datetime.datetime)

ひたすらdir

色々

Python 標準ライブラリ ? Python v2.6.2 documentation

1. はじめに(正規表現)

Python のクラスシステム

Python の ”新しい”クラス

211:pythonスクリプトをデバッグする

Template Engine

Cheetah Users’ Guide

セットアップするとCheetahモジュールの他にバイナリでcheetahができる。こいつでテンプレートをpyにコンパイルしておくと毎回の処理が軽快でしあわせ。

cheetah compile main.tmpl
import main as template
param = {'message':'Hello, world!'}
print templete(searchList=[param])

テンプレート構文が強力でいろいろできてしまうので嫌いな人は嫌い。

HTML Tree

ElementTreeがよく使われるらしいが、けっこう厳密にxmlが作られていないと認めてもらえない。どこからか拾ってきたようなhtmlを解析するにはそれだと困るので、そういう時にBeautifulSoup。

Beautiful Soup documentation

import urllib
import BeautifulSoup as bsoup
soup = bsoup.parse(urllib.urlopen(url))
sum(tag.get('price') for tag in soup.find('div', {'id':'sawaki'}).find('ul').findAll(attrs={'class','noodle'})

文字コード

pythonは日本語文字列ですぐへこたれる。asciiなんだかってやつ。が意識して書くとなんとかなるようになっている。

# -*- encoding: utf-8 -*-

import xml.etree.ElementTree as ElementTree
etree = ElementTree.parse('init.xml')
food = u'きりたんぽ鍋'
etree.find('students/megumi').set('favorite', food)
etree.write('init.xml', 'utf-8')

PythonのUnicodeEncodeErrorを知る – HDEラボ

ElementTreeモジュールについて

Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法

XPath Support in ElementTree


それなりの大きさがあるときはpythonの方が楽しそうだなあ。

perlはundefined valueとデリファレンスの絡みがうざいので、本質的に同じでもNone Typeと言ってくれるとほっとする。

Post a Comment

Your email is never shared.

引く

PageTop