1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

関数

Posted at

関数

関数とは、ある処理をまとめたプログラムの塊で、printも関数の1つです。
本来、コンソールに文字を出力するには色々なコードを書く必要がありますが、printという関数のおかげでprintと書くだけで良いようになっています。
関数は自分で作ることができます。関数はdef 関数名():と記述することで定義できます。
関数は定義しただけでは実行されないので、呼び出す必要があります。
呼び出し方は関数名()と記述することで呼び出せます。
※ただし、関数は定義した後でしか呼び出せないので注意が必要です。

def hello():
    print('Hello')

hello()
出力結果
Hello

と記述することで、まずdef hello():と関数を定義し、関数の処理の内容はインデントをして書いています。
その後、hello()で関数を呼び出すことで、関数が実行されます。

引数

関数を呼び出す際に、関数に値を渡すことができます。この値のことを**引数と呼びます。
引数を渡すと関数の中でその値を利用することができます。
関数に引数を渡せることで、その値によって関数の処理の結果を変えることができます。
関数に引数を渡すには、引数を受け取れる関数を定義しなければなりません。
その為に、関数の定義部分で、引数を受け取る変数
仮引数**を指定します。
次に関数に引数を渡すには、関数名(引数)として関数を呼び出します。渡された引数は、関数の仮引数に代入され、その値を関数の処理の中で用いることができます。

def 関数名(仮引数):
    実行する処理

関数名(引数)
     
def hello(name):
    print('Hello ' + name)

hello('Abe')
出力結果
Hello Abe

と記述することで引数を渡し、その値を関数の処理の中で用いることができます。
仮に引数を変更した場合、「hello('Sato')」であれば出力結果は「Hello Sato」となります。
このように関数に引数を渡せることで、その値によって関数の処理の結果を変えることができます。


複数の引数を持つ関数

引数は複数渡すことができます。複数の引数を受け取るためには仮引数を「,(コンマ)」で区切って定義します。
引数は左から順に「第1引数, 第2引数...」と呼びます。

def hello(name, message):
    print(name + 'さん、' + message) # print(f"{name}さん、{message}")と記述しても同様に表示されます

hello('Abe', 'おはよう')
出力結果
Abeさん、おはよう

と記述することで、複数の引数を渡すことができます。
しかし、引数をの順番は、対応する仮引数の順番と同じにする必要があります。


引数の初期値

引数には初期値を設定できます。
引数が省略された時、初期値が与えられていれば代わりの値として初期値が使われます。

def hello(name, message = 'こんばんは'):
    print(name + 'さん、' + message)

hello('Abe', 'おはよう')
hello('Abe')
出力結果
Abeさん、おはよう
Abeさん、こんばんは

上記のように、仮引数messageに初期値message = 'こんばんは'と設定することで、第2引数が省略されていても初期値が使われます。

スコープ

変数には、その変数が使える範囲が存在します。その範囲のことを**スコープ**と呼びます。
仮引数や関数の中で定義した変数のスコープは関数の中だけとなります。
よって、その変数を関数の外で使うことはできません。

def hello(name):
    print(name) # 変数nameのスコープ(変数nameはこの関数内のみ使える)

hello('Abe')
print(name) # 変数nameのスコープの外(変数nameは関数の外なので使えません。よってエラーが出ます)
出力結果
Abe
︙
NameError: name 'name' is not defined

上記のように、関数内では変数nameは使用できました。
しかし関数の外でも変数nameを使用しようとしましたが、変数nameのスコープの外であったため、使用できませんでした。エラー文を見ても分かるように、スコープの外で使用しようとしたnameは定義されていませんというエラー文が表示されました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?