Google App EngineでPythonを触りながら、行き当たりばったりで学んだことをメモ。
pythonはnotを使用する
TrueならFalse、FalseならTrueに反転させる
>>> a = True >>> a = !a SyntaxError: invalid syntax >>> a = not a >>> a False
typeで型を取得
>>> type({})
<type 'dict'>
typesを使用して型を比較
>>> import types
>>> type({}) is types.DictType
True
こんな書き方じゃダメなのか?
>>> foo = {}
>>> type(foo) is type({})
True
import typesするの面倒とか言っちゃダメですか?。。。ρ(-ω- ) イジイジ
指定したkeyがないとKeyErrorが返ってしまう
>>> feed = {}
>>> feed['entry']
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
feed['entry']
KeyError: 'entry'
上のようにKeyErrorが返るのでそれを回避するには
>>> feed.get('entry')または>>> 'entry' in feed False
どうしてもそう書きたいならNoneを入れておく。
feed = {'entry':None}
ついでにsetdefaultも理解しておく
>>> v = {}
>>> v.setdefault('foo','bar')
'bar'
>>> v['foo'] = 'hoge'
>>> v['foo']
'hoge'
>>> v.setdefault('foo','fuga')
'hoge'
dictのupdateは便利、でもどちらがイイのか?
entry = {'title':'entry title'}
#1.
entry.update({
'content':'entry content',
'url':'entry URL'
})
#2.
entry['content'] = 'entry content',
entry['url'] = 'entry URL'
2.の方もfor文で回せばコードもスッキリするし、速度的にはどうだろう?とか思いながら調べる気にはなれない。(-_-)zzz
updateの処理速度次第ってことで。
jsonを扱うにはsimplejsonを使えばイイようだ
dumpsとloadsの使い方を知っとけばとりあえず何とかなる(はず)(-_-;)
from django.utils import simplejson
#JSON形式の文字列 → Python dectデータ
dect = simplejson.loads(str)
#Python dectデータ → JSON形式の文字列
str = simplejson.dumps(dect)
#loadはファイルからJSONデータをロードする。
f = open("foo.json")
foo = simplejson.load(f)
文字列の入/出力
文字コードの問題でつまずくのは云わば"皆が通る道"のようで、ググるとザクザク出てくる。
こういうのを見ると「既知で何が悪い!!」見たいな開き直りも結構まかり通るんじゃない?という手応えを感じたりして。ー ̄) ニヤッ
文字コードの扱いは多分こんな流れがイイんじゃない?
ファイルの文字コードを
UTF-8に指定#!-*- coding: utf-8 -*-文字コードを指定する理由はファイル内で日本語を書くとローカルでは問題ないが、デプロイするとエラーになるため。
UTF-8にエンコードして取得value = self.request.get('value').encode('UTF-8')
↓ごにょごにょする。
↓
unicodeに変換して出力
self.response.out.write(cgi.escape(unicode(value, 'UTF-8')))みたいな流れがよさげ。
s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneの日記
見たいなことも参考にしたりして。





1 Comments:
dictのupdateはキーワード引数も使えます
>>> a = {}
>>> a.update(x=1, y=2)
>>> a
{'y': 2, 'x': 1}
isinstance関数で、クラスチェックができます。
>>> isinstance({}, dict)
True
コメントを投稿