ファイル名: note16.ipynb
関数は、特定の処理をまとめて名前をつけたものです。同じ処理を何度も書く代わりに、関数としてPythonに処理手順を覚えさせておけば繰り返し使えます。
1. 関数定義の方法
関数を定義するコマンドはdef です。
def 関数名():
処理
def を頭につけて、1行目では関数の名前を決めます。既にPythonが持っている関数は名前に使えません。最後はコロン「 : 」で終えて、2行目からの処理行はインデントしてください。その関数で処理する内容です。たとえば、簡単な例では、Helloと表示するだけのgreet()という関数を定義してみましょう。
def greet():
print("Hello!")
print("Welcome to Python!")
この関数を使うには、次のように書きます。
greet()
引数を使った関数の定義
関数には引数を設定することができます。例えば、下の例ではname という引数を設定し、処理の中でその引数nameを使って処理を定義しています。関数を呼び出すときに、この引数にTanakaと入れると、nameのところをTanakaと変えて表示します。
def greet(name):
print(f"Hello {name}")
print("Welcome to Python!")
greet("Tanaka")
greet("Suzuki")
引数は、数学の関数で言えば、$x$にあたるものです。
def f(x):
y = x*x
print(y)
f(7)
defコマンドの処理
def コマンドの処理ブロックでprintで表示した場合、値は表示すれば消えて無くなります。
例えば、下の例では、f(7) と書いたところで、一旦49と表示されますが、その値は別の変数に引き継ぐことができません。printというコマンドは、表示することに特化していて、データの受け渡しができないのです。
def f(x):
y = x*x
print(y)
z=f(7)
print(z)
データの受け渡しをするためにはreturnコマンドを用います。
return コマンド
関数を 「入力→処理→出力」の構造にして計算結果を再利用したい場合、return を用います。return は出力に当たります。
例えば、下のコードでは関数f(x)はx*xを計算し、それをreturnするという関数として定義しました。
def f(x):
return x*x
z=f(7)
print(z)
このように関数を定義すれば、f(7)というコードでは、7*7を計算し、その値を返してくれ、それを変数zに割り当てるということができます。そして、表示する必要があるときにのみprintコマンドを使用して表示すればよいのです。
2. 関数の引数は2つ以上でも大丈夫
関数の引数は、2つ以上でも大丈夫です。例えば、試合の対戦を表示する関数として、competeという関数を定義することができます。
def compete(a,b):
print(f"{a} and {b} face off.")
compete("たろう","じろう")
compete("はなこ","ともみ")
このように関数を定義して、リストとfor文を用いると、全対戦を書き上げることができます。
name = ["たろう","じろう","はなこ","ともみ"]
def compete(a,b):
print(f"{a} and {b} face off.")
for i in range(4):
for j in range(i+1,4):
compete(name[i],name[j])
3. 関数の引数をリストにする
引数にリストを割り当てることも可能です。
例えば、数字のリストを入れれば、その平均を求める関数averageを定義してみましょう。
def average(nums):
return sum(nums) / len(nums)
scores = [30, 90, 70, 20]
avg = average(scores)
print(f"平均は {avg:.2f}")
こうすると、リストの中にある数字の個数はいくらでも大丈夫ということになります。

コメント