2011年1月21日金曜日

python-blog-system

Pythonでブログシステムを作成中
http://python-blog-system.appspot.com/

2010年12月12日日曜日

移転のお知らせ

移転しました。
http://php6.jp/python

デフォルト引数

関数の引数にはデフォルト値を指定できる。デフォルト値が指定されていれば、引数は指定しなくてもよい。

>>> def multiple(a, b=2):
... return a*b
...
>>> multiple(1)
2
>>> multiple(2)
4
>>> multiple(4)
8
>>> multiple(4,2)
8
>>> multiple(4,4)
16

引数のデフォルト値に可変(Mutable)オブジェクトを指定した場合は毎回同じ値が参照されるので注意。ListやDictionaryを使う場合は要注意
>>> def f(a, L=[]):
... L.append(a)
... return L
...
>>> f(1)
[1]
>>> f(2)
[1, 2]
>>> f(3)
[1, 2, 3]

2010年12月11日土曜日

pass / 何もしない

何も操作をしたくないが構文上の都合で文(statement)が必要なときにはpassを使えばよい。
>>> def func():
...
...
File "", line 3

^
IndentationError: expected an indented block
>>> def func():
... pass
...
>>> func()
>>>

リスト、タプル、ディクショナリ内の値の存在確認

リスト(list)内に要素が含まれているか確認
>>> colors = ("red", "green", "blue")
>>> print "red" in colors
True
>>> print "yellow" in colors
False

タプル(tuple)内に要素が含まれているか確認
>>> numbers = ["zero", "one", "two"]
>>> print "zero" in numbers
True
>>> print "three" in numbers
False

ディクショナリ(Dictionary)のキーに要素が含まれているか確認
>>> monthNames = {1:"Jan", 2:"Feb", 3: "Mar"}
>>> 1 in monthNames
True
>>> 4 in monthNames
False
>>> "Jan" in monthNames
False

ディクショナリ(Dictionary)の値に要素が含まれているか確認
>>> monthNames = {1:"Jan", 2:"Feb", 3: "Mar"}
>>> "Jan" in monthNames.values()
True
>>> "Dec" in monthNames.values()
False
>>> 1 in monthNames.values()
False

GETまたはPOSTで受け取った変数を一覧表示

class MainPage(webapp.RequestHandler):
def get(self):
for key in self.request.arguments():
self.response.out.write(key + "=" + self.request.get(key) + "
")

GQLの実行結果を2個ずつまとめる

#データを取得
sites = db.GqlQuery("SELECT * FROM Site ORDER BY date DESC")

#シンプルな記述/通常はこの記法推奨
for site in sites:
self.response.out.write(site.url+"
")

#インデックスを使ったループ/非推奨
for i in range(0, sites.count()):
self.response.out.write(sites[i].url+"
")

#インデックスを使い2要素ずつ処理/段組などの実装に使う可能性あり
for i in range(0, sites.count(), 2):
for j in range(0, 2):
if i + j >= sites.count():
break
self.response.out.write(sites[i+j].url+" ")
self.response.out.write("
")

#データ構造
class Site(db.Model):
url = db.URLProperty()