概要
Pythonのtutorialで学んだ事を記します。
Pythonにおける関数とは
特定の処理を実行したり、又は値を返したりする名前付きセクションです。
公式でセクションと書かれているけど、セクションって表現当たってるのか?
Function
A Python function is a named section of a program that performs a specific task and, optionally, returns a value
関数を利用する利点
- 一度定義すると何度でも利用可能です。
- コードを短く、簡潔に、読みやすくするのに優れた方法です。
- 関数に適切な命名をすると、その関数が何をするのかがわかり、コードがより読みやすくなります。
- 他の人や、自分が後になってコードを見返した時に、適切に関数が使われていると、コードが読みやすい。
パラメータ(仮引数)
関数はパラメータを定義できます。
このパラメータを使って、関数からの返り値を返ることができます。
返り値(return)
関数は値を返すことが出来ます。
関数の中に定義してある処理に基づいて生成した値を返すのが一般的な使い方です。
ビルドイン関数
ビルドイン関数とは、Pythonに元から組み込まれている関数のことです。自分で定義しなくても使用することが出来ます。
print関数やlen関数などが良い例です。
>>> print("Hello World")
# Hello World
>>> len("Hello World")
# 11
関数を定義しよう!
関数を定義するには下記のように記述します。
# 定義
def show_hello():
print("Hello")
# 実行
>>> show_hello()
Hello
-
def
で関数を定義する事を宣言 -
関数名
を記入し、()
、:
を記述する。 - インデントで
def
より後に処理内容を記述していく。他の言語と比べてインデントが重要な役割を持っているのが特徴です。
インデント
Pythonではインデントを使用して、ブロックを区別しています。
したがって、 def
のブロックに記述したいなら、インデントを使用して、 def
より後ろに処理内容を記述する必要があります。
パラメータと引数
関数にパラメータを定義して、引数に値を渡すことでprintされる文字列を変えることが出来ます。
パラメータ・・・関数内で定義された変数
引数・・・関数を実行する時にパラメータを介して渡す値
>>> def show_hello(name):
... user_name = name
... print("Hello" + user_name)
...
>>> show_hello("Kenta")
HelloKenta
スコープ
スコープとは、変数や関数が宣言された場所のこと。
先ほどの関数を例にすると、関数内では変数 user_name
は使用できましたが、関数外でprintしようとするとエラーになります。
これは、関数内で定義された変数は定義されたスコープ(今回だとshow_hello関数内)でしか使用できないからです。
なので、関数外でも使用したい変数は関数外で定義しましょう。
>>> def show_hello(name):
... user_name = name
... print("Hello" + user_name)
...
>>> show_hello("Kenta")
HelloKenta
>>> print(user_name)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'user_name' is not defined
複数の引数
関数で使用できる引数は一つだけではなく、複数指定することが可能です。
下記のように2つパラメータを定義すると、2つの引数を指定できるようになります。
左から、第一引数、第二引数、、、と数えます。
>>> def full_name(first_name = "Tanaka",second_name = "Masasi"):
... print(first_name + " " + second_name)
...
>>> full_name("Tanaka","Masasi")
Tanaka Masasi
デフォルト値と名前付きパラメータ
パラメータにはデフォルト値を設定する事が出来ます。
下記のように パラメータ = デフォルト値
とすると、引数で値を渡さなくても、デフォルト値が表示されます。
>>> def full_name(first_name = "Tanaka",second_name = "Masasi"):
... print(first_name + " " + second_name)
...
>>> full_name()
Tanaka Masasi
第一引数はデフォルト値で、第二引数だけ値を渡したい時は、名前付きパラメータを使用できます。
下記のように引数に値を渡す時に、パラメータを指定して、値を渡してあげることで特定のパラメータに値を渡す事が出来ます。
>>> full_name(second_name = "Yujirou")
Tanaka Yujirou