Python基本文法まとめ(7) 関数の使い方

自分(初心者)用のPython3の基本文法メモ
第7回目は関数について

Python3-関数

ユーザー定義関数

  • Pythonの関数はdefを使って作成する。
  • 戻り値はreturnで返す。
  • 関数内に記述した変数はローカル変数となる
  • 関数内部でグローバル変数を使うには、変数の前にglobalをつける
    →global 変数

関数の書式

def 関数名(引数1, 引数2, ・・・):
    処理
    return 返り値

(例)引数に底辺の長さと高さを指定すると三角形の面積を求めるtriangleを定義し、戻り値をprintで表示する。
def triangle(base, height):
    return base * height / 2
    
base = 10
height = 5
print(triangle(base,height))

#結果
25.0

デフォルト値

引数にデフォルト値を設定する場合、デフォルト値を設定しない引数よりも後に記述しなければならない。

デフォルト値は、引数 = デフォルト値 で指定する。

(例)さっきのtriangle関数の引数にデフォルト値を指定する場合
def triangle(base = 10, height = 5):
    return base * height / 2
    
print(triangle(10))

#結果
25.0
引数を1つ(base)しか指定していないが、2つ目の引数はデフォルト値が適用され、ちゃんと計算されている。




キーワード引数

引数を渡す時に引数名を指定することができる。

キーワード引数を使い、引数の役割を明示することでコードの可読性が高まる。

キーワード引数を使うと関数を使用する際に、引数の順番をdef文の定義と変えることができる。ただし、キーワード引数とキーワードなしの引数を併用する場合は、キーワード引数を後に記述しなければならない。

(例)三角形の面積を求めるtriangle関数の高さにキーワード引数を使用した場合
def triangle(base = 10, height = 5):
    return base * height / 2
    
print(triangle(20, height = 10))

可変長引数

引数の前に*をつけると可変長引数として扱える
→*が1つの場合、引数はタプルとなる
→*が2つの場合、引数は辞書となる

(例)受け取った可変長の引数の平均を求める関数
def avg(*nums):
    sum = 0
    for num in nums:
        sum = sum + num
    return_value = sum / len(nums)
    return return_value

print(avg(1,2,3,4,5))
print(avg(10,20,30))

#結果
3.0
20.0

可変長引数の注意点

  • 普通の引数と可変長引数を併用する関数を定義する際は、可変長引数を最後に指定しなければならない。
  • ただし、普通の引数をキーワード引数にすれば可変長引数を最初に指定することができる。

docstring

docstringとは関数などに説明文をつける機能のこと。関数の下に三重引用符で囲うとdocstringになる。

def triangle(base, height):
'''三角形の面積を求める関数。base=底辺、height=高さ。'''
    return base * height / 2

docstringを見る方法
→help(関数名)
help(triangle)

#結果
Help on function triangle in module __main__:

triangle(base, height)
    三角形の面積を求める関数。base=底辺、height=高さ。

lambda式(無名関数)

lambdaとは、名前を定義しないで使うことができる関数のことで、わざわざ定義する必要がないような関数を簡潔に記述することができる。

lambdaの書式

変数 = lambda : 引数1, 引数2,・・・ : 処理

(例)引数を二倍するlambda
x2 = lambda x : x * 2
num = x2(3)
print(num)

#結果
6



今回はここまで。
次回は、たぶんクラスの使い方について


Pythonを覚えたらやりたことや作りたいものがたくさんある。
焦らず、けど着実に

0 件のコメント :