Pythonの基礎2

 今回はフロー制御(if文とfor文)関数定義クロージャとラムダ式ジェネレータリスト内表記 について説明していきます。

フロー制御

 Pythonのフロー制御としてここではif文for文を紹介します。 その前にフロー制御の条件式を理解する際に必要となる比較演算子について説明します。 Pythonに限らずプログラム言語には比較演算子というものが存在します。以下に重要なものについて示します。

== #等しい
!= #等しくない
> #より大きい
>= #以上
< #未満
<= #以下
それではまずif文について説明していきたいと思います。これはプログラムの中で条件分岐をしたい時に用います。
if 条件式:
条件式が成り立つときしたい処理内容
else if 条件式:
条件式が成り立つときしたい処理内容
else:
条件式が成り立つときしたい処理内容
上記のように書きます。条件式は先ほど説明した比較演算子を使って書いていきます。次にfor文について説明します。 これはプログラムの中で繰り返しの処理を行いたいときに用います。
for i in オブジェクト:
実行する内容
iは繰り返される変数であり、オブジェクトの部分は繰り返したい回数などが入ります。オブジェクトの部分は 各自使いたい用途に応じて調べることをお勧めします。

関数定義

 ここでは関数の定義について説明します。Pythonではdefを使って 独自の関数を定義することができます。例えば'こんにちは'と出力する関数say-hello()を作ってみたいと思います。

def say-hello():
print('こんにちは')
このようにまずdef 関数名で関数名を定義します。そして関数の中身として処理したい内容を記述します。 また、このような関数もあります。
def add(a,b):
c = a+b
return c
前の関数と違うところはかっこの中身returnという記述です。 これはそれぞれ引数返り値と呼ばれるものです。引数は関数の変数のようなもので、返り値は関数の 出力に該当します。また、複数の引数をまとめて関数に渡したい場合は
def add(*args):
return args[0]+args[1]
のように関数を定義します。*argsの部分が複数の引数を表しています。 ここで引数に辞書オブジェクトを指定したければ**argsのように記述すればよいです。

クロージャとラムダ式

 ここでは関数についても少し詳しいことを取り扱っていきます。まずクロージャについてです。 クロージャは関数の中に関数を入れる仕組みのことです。

def outer(a,b):
def inner(c):
return c*(a+b)
retrun inner
これがクロージャです。まず最初の関数のオブジェクトを指定し、変数にその関数を格納します。 そしてもう一つのオブジェクトを指定すれば、返り値としてinnerを指定すればvalueを得ることができます。 次にラムダ式についてです。これは関数をdefで定義せずに記述すること仕組みのことです。
C = (lambda a,b:2*a+3*b)(a,b)
これがラムダ式で記述された関数です。最初のlambda a,bと最後の(a,b)は関数の引数で 真ん中の2*a+3*bが返り値になります。このように特別な名前をつけずに定義する関数のことを無名関数といいます。 また複数のデータを用いて上記の処理をしたい場合は
data1 = [1,2,3,4]
data2 = [5,6,7,8]
result = list(map(lambda a,b:2*a+3*b,data1 data2))
と記述すればよいでしょう。ここで用いられているmap関数は一つ目の引数に処理内容、二つ目の引数に処理対象のリストを指定して用いています。

ジェネレータ

 引き続き関数について説明します。次はジェネレータというものです。ジェネレータは関数の中に "yield 処理内容"を複数書き、関数をnext関数で呼び出して1つずつ処理をしていく機能です。

def linestyle_generator():
linestyle = ["-","--","_",":"]
lineID = 0
while True
yield linestyle[lineID]
lineID = (lineID+1)%len(linestyle)
LS = linestyle_generator()
for i in range(5):
print(next(LS))
このようにすると"-"が出力された後に、"--"が出力されと関数の中身を一気に実行するのではなく、 呼び出す内容を変えたい場合に使います。ちなみにこのプログラムはグラフのラインのスタイルを変えるものになっています。

リスト内表記

 ここでは最後にリスト内表記について説明します。

t = [1,2,3,4,5]
r1 = [i for i in t]
print r
#実行結果
r1 = [1,2,3,4,5]
このように簡略化して書くことができます。これをリスト内表記といいます。