Python3メモ⑩(関数)

今まで見てきた関数はPython自体に元々ある関数(組み込み関数)でしたが、今回は自分で作る関数を見ていきます。
使用頻度の高い処理を関数としてあらかじめ定義することで、プログラムの重複コードを避けることができ、コードが短くなり、修正も簡単になります。
Pythonはの関数は、変数に代入できたり、引数にできたり、戻り値にできますので、関数を使いこなすことで、複雑なプログラムを書けるようになります。

関数を定義

def 関数名(仮引数):
    何かの処理
    return 変数か値を戻す

定義した関数を使う。
returnした戻り値を変数に格納します。
変数 = 関数名(実引数)

※引数(ひきすう)は二種類あって、仮引数とは関数定義に使用される引数のことで、実引数とは関数を使用するときに渡される引数のことです。

関数の例

例えばtestという名の関数を作ります。

結果
8

引数とreturnがない場合。

結果
こんにちは

仮引数のデフォルト値

addという名の関数を作成。
仮引数bにはデフォルト値「10」を設定

可変長引数

仮引数は「アスタリスク」をつけることで任意の個数の引数を受け取ることができます。
アスタリスク1つの場合(タプル型にして受ける)。

結果
1
()
1
(2,)
1
(2, 3, 4, 5, 6, 7, 8, 9, 10)

アスタリスク2つの場合(辞書型にして受ける)。

結果
1
{}
1
{‘b’: 2}
1
{‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6, ‘g’: 7, ‘h’: 8, ‘i’: 9, ‘j’: 10}

複数個の値を返す

Pythonは複数同時代入ができるので、関数から複数の値を返し、それを受けることができます。

結果
7
3
(7, 3)

関数を変数に代入

Pythonの関数は変数に入れられますので下のようなことができます。

結果
3
7
11

変数のスコープ

グローバル変数、ローカル変数の違いについて見ていきます。スコープとは変数が有効な範囲という意味です。
グローバル変数は、関数内からも見えるのですが、変更するには関数内で変数を global 宣言しないとできません。

結果
150
60
100
200

※グローバル変数にリストや辞書などを入れた場合は、global宣言しなくても要素の編集はできます。

バブルソート

Pythonには組み込みのソート関数とメソッドがあるので、自分でソート関数を作らなくてもよいのですが、勉強のために基本的なソートを考えてみます。
隣同士を比較して、左が大きければ交換という処理を繰り返して、最終的に小さい順に並べ替えるバブルソートのアルゴリズムです。

結果
ソート前 [3, 10, 6, 2]
3と10を比較
    交換なし [3, 10, 6, 2]
10と6を比較
    交換 [3, 6, 10, 2]
10と2を比較
    交換 [3, 6, 2, 10]
3と6を比較
    交換なし [3, 6, 2, 10]
6と2を比較
    交換 [3, 2, 6, 10]
3と2を比較
    交換 [2, 3, 6, 10]
ソート後 [2, 3, 6, 10]

3行目のrangeですが、第3引数に-1を指定しているので逆順になります。例えばrange(10,0,-1)なら[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]となります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする