Pythonの基礎 ~関数~
0.はじめに
こちらの記事ではPythonの関数について学べます。
関数という言葉はあまり馴染みもなく、どのように使われるのかイメージできないと思いますが、
自動化プログラムを実装をするにあって必要な知識になってきますので、
こちらの記事を実践してもらい、ちょっとずつ理解を深めていきましょう。
1.関数とは
関数とは特定の処理を何度も書く必要がないように、1つにまとめたものを関数
といいます。
2.関数の実装
条件分岐などを1つにまとめておけば、同じ条件式を書く際に何度も書く必要がなくなります。
では、実際に実装していきましょう。
2.1 書き方
Pythonにおける関数の書き方はdef 関数名():
で書くことができます。
Hello python
という文字をログに出力してくれる関数を書く場合は次の通りです。
def hello_python():
print("Hello python")
hello_python()
まず、def hello_python():
でhello_python
という関数名を作成します。
次にhello_pythonの中にインデントを入れた上でログに出力するためのprintを使用しています。
最後に作成したhello_python関数を呼び出す必要があります。
呼び出し方は簡単で、hello_python()
と関数名を書くだけで呼び出せます。
通常プログラミングは上から下に処理が実行されます。
ただ、実装した関数は呼び出し
を行わないと実行されないので、最後の1行でhello_python()
が必要になります。
2.2 引数
関数の特徴として、値を引き渡すことが可能です。
例えば先ほどのhello pythonのpython部分だけど、動的に処理によって出力を変えたとします。
そこで使用するの関数の引数です。
引数の渡し方はカッコの中に変数名を定義しておけば関数を呼び出す際に渡したい値をかっこに入れれば値を渡せます。
実際にコードを実装してやってみましょう。
def hello(name):
print(f"こんにちは{name}!")
hello("山田")
hello("ごっつ")
※printのインデントに注意してください。
これを実行すると
こんにちは山田!
こんにちはごっつ!
nameの部分が関数を呼び出すときに渡した値通りになっていますね。
引数はこのように動的に値を変えたい場合に使える関数を扱う場合の必須知識になってきますので、
引数の概要は覚えておきましょう。
引数を複数渡したいケースもあります。
その場合は,
で区切って定義をすれば複数渡すことが可能です。
def hello(name, age):
print(f"こんにちは{name}! {name}の年齢は{age}歳なんですね!")
hello("山田", 20)
hello("ごっつ", 30)
これを実行すると
こんにちは山田! 山田の年齢は20歳なんですね!
こんにちはごっつ! ごっつの年齢は30歳なんですね!
と表示されます。
ここで注意しなければいけないのが順番です。
引数には順番がありまして、()の左から第一引数、第二引数 と数が増えていきます。
ここではnameが第一引数で、ageが第二引数になります。
これを逆にして関数を呼ぶときに値を逆にすると次にようになってしまいます。
def hello(name, age):
print(f"こんにちは{name}! {name}の年齢は{age}歳なんですね!")
hello(20, "山田")
hello(30, "ごっつ")
# 出力結果
こんにちは20! 20の年齢は山田歳なんですね!
こんにちは30! 30の年齢はごっつ歳なんですね!
となってしまいます。
関数で複数の引数を扱う場合は順番に注意して値を渡すようにしましょう。
ただ、引数にも順番関係なく渡す方法もあります。
それは引数で値を渡すときに、関数で定義した変数名を指定した状態で値を渡す方法です。
具体的には次にように書きます。
def hello(name, age):
print(f"こんにちは{name}! {name}の年齢は{age}歳なんですね!")
hello(age=20, name="山田")
hello(age=30, name="ごっつ")
変数名=値
のように書けば、順番は逆でも指定した変数名に値を渡すことが可能です。
2.3 return
return
とは関数から値を返すために使用します。
先ほどまでのは関数内で処理が完結していました。
しかし、関数内で行った処理の結果が欲しい場合もあります。
そのためにreturnを使用します。
具体的には次にように書きます。
def hello(name):
return f"こんにちは{name}!"
message = hello("ごっつ")
print(message)
これを実行するとこんにちはごっつ!
と返ってきます。
一見先ほどの処理と出力結果があまり変わっていないので、わかりずらいかもですが、
ログ出力する方法が変わっています。
今までは関数ないでprint処理を行ってログ出力していましたが、
returnで値を返すようにしたことにより、関数から受け取ったmessage
をprintすることによって
ログ出力を行えるようにしています。
Discussion