関数でスッキリします!
前回はpass文をやりました。
今回は『関数の定義』です。
関数っていうと、数学の用語として思い浮かぶかと思います。そのイメージはこんな感じですね。
wikipediaから引用
何らかの入力をすると、なんかやって出力する。
今回pythonで扱う関数も、基本的にはこのようなイメージですが、もうちょっとざっくりしています。
pythonの関数は、『処理をまとめておくもの』です。その処理に必要なデータを入力することもできるし、
何らかの結果を出力することもできます。逆に言うとなくても構いません。
def hello():
print("hello")
上記は入力も出力もないpythonの関数です。
呼び出すと、"hello"が画面に出力されます。
このような、出力ではない何らかの作用をその関数の副作用っていうこともあります。
つまり、pythonでは『出力がなく、副作用のみの関数を定義することができる』ということです。
この例で出できたdefというキーワードは関数の定義(definition)と言う意味です。defに続いて関数の名前を書きます。
関数の名前の右側に空の()がありますが、関数に入力が必要な場合はここに入力を格納する変数名を書きます。
def say_something(something):
print(something)
上の例だと、入力として与えた値がsomethingという名前の変数に格納され、それが画面出力されます。
>>> say_something("こんにちは")
こんにちは
このカッコの中の変数名は一般的に引数(argument)と呼ばれます。
では、もう一つ関数を定義してみましょう。
def return_something(something):
return something
これを実行するとどうなるでしょう。
>>> return_something("こんにちは")
'こんにちは'
前に定義した関数say_somethingとよく似ていますが、ちょっとだけ結果が違います。
今度は出力された文字列がシングルコーテーションで囲われていますね。
この違いはこのようにするとより理解しやすいかもしれません。
>>> return1 = say_something("こんにちは")
こんにちは
>>> return1
(出力なし)
>>> return2 = return_something("こんにちは")
(出力なし)
>>> return2
'こんにちは'
違いがわかりましたか?
関数say_somethingは引数をprintで画面出力していますが、関数としての出力はないので、result1は空です。
一方で、関数return_somethingは引数をそのまま出力しているので、result2には入力した文字列がそのまま代入されます。
この出力される値は戻り値(return value)と呼ばれます。何の値を出力させるかは関数内でreturnキーワードを使って定義します。
次回は関数定義の第2段!

