Pythonでブログシステムを作成中
http://python-blog-system.appspot.com/
2011年1月21日金曜日
2010年12月12日日曜日
デフォルト引数
関数の引数にはデフォルト値を指定できる。デフォルト値が指定されていれば、引数は指定しなくてもよい。
>>> 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]
>>> 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()
>>>
>>> def func():
...
...
File "
^
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
>>> 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) + "
")
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()
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()
登録:
投稿 (Atom)