DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPython入門
  4. 関数 ー ゼロから始めるPython入門【Vol.10】

関数 ー ゼロから始めるPython入門【Vol.10】

関数はコードを再利用できるように処理まとめたものです。
いままでもprint()関数、str()関数などを使ってきました。

組み込み関数

print("OK")

関数は「関数名()」という書式です。()の中に入れるデータを引数といいます。引数とは関数に与える材料です。

関数は処理結果を返す関数があります。

num = len([2, 8, 4]);
print(num)

len()関数は引数にリストを渡すと、リストの要素数を計算します。その計算結果を返してnum変数に代入しています。処理結果を戻り値といいます。

変数 = 戻り値のある関数()

と書いた場合、戻り値は変数に代入されます。

戻り値のある関数()

と書いてもエラーにはなりませんが、戻り値を受ける変数がないので、戻り値が捨てられてしまいます。

len([2, 8, 4]);

だけですと、何も出力されません。

ただし、

print(len([2, 8, 4]));

と書くと戻り値が出力されます。このコードは

num = len([2, 8, 4]);
print(num)

と本質的に同じです。

len()関数とprint()関数は組み込み関数と呼ばれ、いつでもどこでも使えます。

Pythonの公式サイトに組み込み関数の一覧がまとまっています。
http://docs.python.jp/3.5/library/functions.html

自分で定義する関数

関数は自分で定義することができます。
Atomを起動します。[ファイル]メニュー→[新規ファイル]をクリックします。[ファイル]メニュー→[保存]をクリックします。新規ファイルを生成以下のコード書いて、Vo.3でつくった「python-study」フォルダ内に、「def1.py」というファイル名で保存します。

def hello(name):
    print("こんにちは" + name + "さん。")

hello("太郎")

実行すると

こんにちは太郎さん。

戻り値のある関数も作れます。「def2.py」というファイル名で保存します。
消費税込みの値段を計算する関数をつくってみましょう。

def con_tax(price, tax_rate):
    return price + int(price * (tax_rate/100))

total_price = con_tax(1000, 8)
print(total_price)

con_tax()関数に、商品本体の値段と消費税率を引数に渡しています。
引数は複数設定できます。複数設定した場合、引数の順番は定義側と呼び出し側であわせる必要があります。
con_tax(8, 1000)と書いてしまうと、まったく計算結果がかわってしまうので注意が必要です。

1080

デフォルト引数

デフォルト引数を使うと以下のように書くことができます。

def con_tax(price, tax_rate = 8):
    return price + int(price * (tax_rate/100))

total_price = con_tax(1000)
print(total_price)

結果は同じです。

1080

con_tax(1000)に注目すると、引数をひとつしか渡していません。
定義側では2つの引数を必要としているのですが、def con_tax(price, tax_rate = 8):とかいてあり、2つめの引数は省略された場合、デフォルトで8が代入されます。

多くの関数でデフォルト引数が使われており、呼び出す側は最小限の引数で使えるようになっています。

def con_tax(price, tax_rate = 8):
    return price + int(price * (tax_rate/100))

total_price = con_tax(1000, 10)
print(total_price)

と2番目の引数を違う値で書いた場合、

1100

と出力され、デフォルト引数の値は使われません。

名前付き引数

関数を呼び出すときに、引数に名前を指定することができます。この場合、引数の順番は任意で書けます。

def con_tax(price, tax_rate):
    return price + int(price * (tax_rate/100))

total_price = con_tax(price=1000, tax_rate=8)
print(total_price)
def con_tax(price, tax_rate):
    return price + int(price * (tax_rate/100))

total_price = con_tax(tax_rate=8, price=1000)
print(total_price)

どちらも結果は

1080

です。名前付き引数を使うと、引数の順番を間違えて計算結果が変わるミスを防げます。またコードを読む側は、コードの可読性が高くなります。

ローカル変数

関数の中で利用した変数は関数の外からはアクセスができません。
以下の例ですと、

num = 10

def asign_num():
    num = 100

asign_num()
print(num)
10

が出力されます。関数の外側のnum変数と関数の内側のnum変数は区別されます。
関数の中の変数はローカル変数と呼ばれます。

def asign_num():
    num = 100

num = 1000
asign_num()
print(num)

と書いた場合、

1000

と表示されます。関数の内側のnum変数の値は保護され、関数の外側から上書きできないのです。関数は様々な場所から呼び出されます。今回のように関数の内側の変数と外側の変数の名前が一致してしまう可能性があるので、このような仕様になっています。

スポンサーリンク

関連記事

プロフィール

DESIGNMAP
制作ディレクター。フリーランス。
ON VISITING」を運営。
お問い合わせ