4章突入。
if文
- if <test1>:
- <statements1>
- elif <test2>:
- <statements2>
- else:
- <statements3>
な感じ。「else if」、[elsif」でもなく「elif」。
for文
あらゆるシーケンスに対し、そのシーケンス内の順序で反復する。
- for <var> in <sequence>:
- <statements>
な感じ。
ループ内でリスト内のアイテムを更新する際は、リストのコピーをとって反復をかける。
- >>> a = [1,2,3,4,5]
- >>> for b in a[:]:
- ... a.insert(0, b)
- ...
- >>> a
- [5, 4, 3, 2, 1, 1, 2, 3, 4, 5]
- >>>
な感じ。
range()
連続した数字列に対して反復をかけたいときに便利。
- >>> range(5)
- [0, 1, 2, 3, 4]
- >>> range(5, 10)
- [5, 6, 7, 8, 9]
- >>> range(0,10,3)
- [0, 3, 6, 9]
break文、continue文。
Cから持ってきたもの。動きに関してもほぼ一緒。
ループ文にはelseブロックを持たせることができるが、break文で終了した場合はelseブロックは実行されない。
pass文。
なにもしない文。
関数定義
- def func(arg):
- statements
の形。
「関数をコールするときに渡される実パラメータは、コール時点で、その関数のローカルシンボル表に加えられる。」
とのこと。
extends environmentな感じか。
return文がない場合、またはreturnに式を伴わない場合は、はNoneが返される。
引数のデフォルト値
関数の引数はデフォルト値を指定できる。
デフォルト値が指定されている場合、定義上渡せる引数よりも少ない引数でコールできる。
注意点:デフォルト値は、関数を定義しているスコープで定義した時点で評価される。
以下、その例。
- >>> i = 100
- >>> def func(aaa = i):
- ... print aaa
- ...
- >>> i = 99
- >>> func()
- 100
- >>>
また、デフォルト値は一度しか評価されない。
以下、その例。
- >>> def func(x, aaa = []):
- ... aaa.append(x)
- ... return aaa
- ...
- >>> print func(1)
- [1]
- >>> print func(2)
- [1, 2]
- >>> print func(3)
- [1, 2, 3]
- >>>
キーワード引数
キーワード引数も受け取れる。
- >>> def func(a, b, c):
- ... print "a = [%s]" % a
- ... print "b = [%s]" % b
- ... print "c = [%s]" % c
- ...
- >>> func(a="aaa", b="bbb", c="ccc")
- a = [aaa]
- b = [bbb]
- c = [ccc]
- >>>
な感じ。
キーワード引数を使えば、引数の指定順は任意。
キーワード名には「仮引数」名を使用する。
※突然「仮引数」という言葉が出てきたが、一般的な「仮引数」でよいのだろうか・・・?
良さそうだねー。
仮引数の最後に**名前という形で記述すると、その名前が指す変数はディクショナリとして
仮引数に対応するキーワードを省いた全てのキーワード引数を受け取ることができる。
つまり、仮引数にないキーワードも使えるようになる。
任意引数
引数をタプルで受け取れるようにすれば任意個のパラメータを受け取れるようになる。
- >>> func("a","b","c","d","e")
- a=[a]
- b=[b]
- ('c', 'd', 'e')
- >>>
引数リストのアンパック
- >>> def func(a, b, c):
- ... print "a=[%s]" % a
- ... print "b=[%s]" % b
- ... print "c=[%s]" % c
- ...
- >>> L = [1,2,3]
- >>> func(*L)
- a=[1]
- b=[2]
- c=[3]
- >>>
*演算子を使えば、引数にリストを展開して渡すことができる。
さらに、
**演算子を使えば、引数にキーワード引数としてディクショナリを展開して渡すことができる。
- >>> D = { "b":"2", "c":"3", "a":"1"}
- >>> func(**D)
- a=[1]
- b=[2]
- c=[3]
- >>>
lambda式
無名関数を生成する。が、単一の式しかもてない。
ドキュメンテーション文字列。
ドキュメンテーション文字列がかけるよ、というお話。
おしまい。
.
0 コメント:
コメントを投稿