2008/04/11 (Fri)
Pythonの基本的なメモ集(del文・条件分岐・辞書・タプル/例外/関数の例)
del文
del文では定義済みの変数を未定義にできる。
#! /usr/bin/python a = 1 print a # 1 del a #print a # NameError: name 'a' is not defined
より詳しくは
http://www.python.jp/doc/release/ref/del.html
に書かれているが、抽象的で意味がよく分からなかった。
条件分岐(if文)
- if/elif/elseというキーワードはシェルスクリプトに近いが、行末に「:」を付ける点に注意
- 条件のAND(かつ)/OR(もしくは)はそれぞれ「and」と「or」と記述
- 「if a < b == c:」は、「a < b」かつ「b == c」
#! /usr/bin/python # -*- encoding: utf-8 -*- a = b = 1 if a == b: # 最後にコロンを付ける(セミコロンではない) print "a == b" if not a != b: # 否定は「if not」(この例は「等しくない」の否定で「等しい」) print "not a != b" if a == 0 or b == 0: # 偽 print "a == 0 or b == 0" if a == 0 or b == 1: # 真 print "a == 0 or b == 1" if a == 0 and b == 1: # 偽 print "a == 0 and b == 1" if a == 1 and b == 1: # 真 print "a == 1 and b == 1" if a == 0: pass elif a == 1: # シェルスクリプト同様「if - elif - elif - ... - else」 print "a == 1" if b == 0: pass elif b == 2: pass else: # elseの後ろにもコロンは忘れずに print "else" if a == b < 2: # aとbが等しく、その値が2未満 print "a == b < 2"
実行結果
a == b not a != b a == 0 or b == 1 a == 1 and b == 1 a == 1 else a == b < 2
辞書の使用例
#! /usr/bin/python # -*- encoding: utf-8 -*- dic = { "pen" : u"ペン".encode('utf-8'), "pencil" : u"鉛筆".encode('utf-8'), } # 個別に直接取り出す print "pen -> %s\npencil -> %s" % (dic['pen'], dic['pencil']) # それぞれのキー/値を全て処理して取り出す for en, ja in dic.iteritems(): print "%s <- %s" % (ja, en)
実行結果
pen -> ペン pencil -> 鉛筆 鉛筆 <- pencil ペン <- pen
iteritems()をfor文で使用すると、全てのキー/値に対してそれぞれ処理が行える。このfor文の書式はシェルスクリプトに近い。
ループのテクニックとして、他の高度な扱い方も
http://www.python.jp/doc/2.3.5/tut/node7.html#SECTION007500000000000000000
に紹介されている。
タプルの使用例
関数の戻り値に複数の値を含める場合の例。このコードは関数や例外処理の使用例も兼ねる。
#! /usr/bin/python # -*- encoding: utf-8 -*- def devide(a, b): """aをbで割り、0で割ったときにステータス部分にFalseが返る""" try: value = float(a) / float(b) status = True except ZeroDivisionError: # 0で割ったときに出る例外 value = None status = False return (status, value) ret = devide(7, 2) # ret[0], ret[1]のように取り出す if ret[0]: # 除算成功(ステータスがTrue) print "devide(7, 2): OK(%f)" % ret[1] # 計算結果 else: print "devide(7, 2): NG" (stat, val) = devide(1, 0) # 分けて代入することもできる if stat: print "devide(1, 0): OK(%f)" % val else: # 除算失敗 print "devide(1, 0): NG"
実行結果
devide(7, 2): OK(3.500000) devide(1, 0): NG
例外の処理に関しては
http://www.python.jp/doc/release/tut/node10.html#SECTION0010200000000000000000
を参照。
(2009/4/8)例外については下の関連記事にもまとめた。
関連記事:
カシオ
購入: 8人 クリック: 56回
購入: 8人 クリック: 56回
トラックバック - http://d.hatena.ne.jp/kakurasan/20080411/p1
リンク元
- 886 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&ei=NwcqT_2hI8SMmQXHgY3wDw&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA&sig2=3MWaWUV-MIa95u4BEkasdg
- 563 http://www.google.co.jp/url?sa=t&rct=j&q=python if文&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&ei=-wqETrvHCeGViQeYutmeDw&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA&sig2=KUAmQSBH7XHDUheILTfS0w
- 307 http://www.google.co.jp/url?sa=t&rct=j&q=python+if文&source=web&cd=1&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&ei=vzjGTpI358mZBenX2A0&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA
- 186 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=python+if+かつ
- 173 http://www.google.co.jp/url?sa=t&rct=j&q=python if not&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&ei=pMmgTu7ZM8ytiQeJtKDaBg&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA
- 172 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&rct=j&q=python if not&ei=2O6wTbTCIZGGuQPDw4CUBw&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA
- 142 http://www.google.co.jp/search?q=python+if文&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 133 http://www.google.co.jp/search?aq=f&sourceid=chrome&ie=UTF-8&q=python+条件
- 125 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CFUQFjAD&url=http://d.hatena.ne.jp/kakurasan/20080411/p1&ei=AkB5T-OIFqrLmAWEifHpDw&usg=AFQjCNGy4B1JaySuMi4oen0XYO8qjjTwYA&sig2=Ed40wEpoA42dBsUvseeP5A
- 109 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&q=python+辞書+例外&btnG=検索&lr=lang_ja