目次
01. 関数
02. 引数と戻り値
03. デフォルト引数
04. 引数
05. 関数
確認環境:Python 3
関数とは
- 関数は処理をまとめることができます。
- 関数名の前にdefを記述します。引数のあとにコロン(:)が必要です。
- 引数は関数にデータを渡します。パラメータとも言います。
- 引数は必須ではありません。
- 呼び出し先の引数は、「仮引数」といいます。
- 呼び出し元の引数は、「実引数」といいます。
- returnは、関数の呼び出し元に値を返します。返す値を返り値または戻り値といいます。
- returnは必須ではありません。
- 以下はPythonの公式ドキュメントのユーザー定義関数のリンクです。
https://docs.python.jp/3/reference/compound_stmts.html?highlight=if#function-definitions
引数と戻り値がない場合
# coding: utf-8
def test1():
print("test") # testと表示される
test1()
6行目のtest1()が、3行目の関数を呼んでいます。
引数と戻り値がある場合
# coding: utf-8
def test2(a,b):
return a + b
num = test2(2,3)
print (num) # 5を表示する
6行目のtest2(2,3)が、3行目の関数を引数付きで呼んでいます。
test2(2,3)の引数の2は、3行目のtest2(a,b)のaになります。引数の3は、bになります。
4行目で計算した値をreturnで呼び出し元に返しています。
デフォルト引数がある関数
デフォルト引数は、関数の引数にデフォルト値が設定されています。
関数を呼ぶ側は、引数を省略できます。
# coding: utf-8
def test3(a=1,b=2,c=3):
return a + b + c
num = test3()
print (num) # 6を表示する
3行目は、デフォルト引数を使用しています。
6行目は、引数を指定していませんがデフォルト引数の値で計算されてnumの値は6になります。
一部にデフォルト引数がある場合
デフォルト引数は、右から順に指定します。左端1つのみ指定することはできません。
# coding: utf-8
def test4(a,b=2,c=3):
return a + b + c
num = test4(1)
print (num) # 6を表示する
6行目の引数の1は3行目のaにあたります。
デフォルト値がある箇所に引数を設定した場合
# coding: utf-8
def test5(a=1,b=2,c=3):
return a + b + c
num = test5(5,6)
print (num) # 14を表示する
6行目は、引数を2つ設定しています。
引数の値は、関数に設定した引数が優先されてaは5、bは6、cは3として計算されます。
関数の呼び出し時に引数名を指定する
関数の呼び出し時に引数名を指定すると、実引数が順番に並んでいなくても意図した仮引数に値を渡すことができます。
# coding: utf-8
def testcalc(a,b):
return a - b
num = testcalc(b=1,a=8)
print (num) # 7を表示する
6行目は、(b=1,a=8)というように引数名をイコール(=)を使用して指定しています。
引数をタプルで受け取る
*変数 |
引数をタプルで受け取るサンプルです。
仮引数の前にアスタリスクをひとつ付けます。
# coding: utf-8
def test1(*a):
print(type(a)) #<class 'tuple'>
for c1 in a:
print(c1) # red yellow blue
test1("red","yellow","blue")
3行目は、仮引数の前にアスタリスク(*)がひとつ付いています。
4行目のtypeでは、引数の値はtupleと表示されます。
5,6行目は、for文で値を表示しています。
# coding: utf-8
def test1(a: int, b: int) -> int:
return a + b
num1 = test1(2, 3)
print(num1) # 5を表示する
def test2(a: str, b: str) -> str:
return a + b
str2 = test2("hello", "world")
print(str2) # helloworldを表示する
引数をディクショナリで受け取る
**変数 |
引数をディクショナリで受け取るサンプルです。
仮引数の前にアスタリスクをふたつ付けます。
# coding: utf-8
def test1(**a):
print(type(a)) #<class 'dict'>
for key in a:
print(key,a[key]) #c1 red c2 yellow c3 blue
test1(c1="red",c2="yellow",c3="blue")
3行目は、仮引数の前にアスタリスク(**)がふたつ付いています。
4行目のtypeでは、引数の値はdictと表示されます。
5,6行目は、for文でキーと値を表示しています。
-> アノテーション(引数と戻り値のデータ型の指定)
# coding: utf-8
def test1(a: int, b: int) -> int:
return a + b
num1 = test1(2, 3)
print(num1) # 5を表示する
def test2(a: str, b: str) -> str:
return a + b
str2 = test2("hello", "world")
print(str2) # helloworldを表示する
3行目の:intは、引数のデータ型です(整数)。
-> intは戻り値のデータ型です。
9行目の:strは、引数のデータ型です(文字列)。
-> strは戻り値のデータ型です。
ただし、データ型が異なっていてもエラーになりません。
ローカル関数(関数の中に関数)
# coding: utf-8
def test1():
def test2():
print("test2")
print("test1")
test2()
test1() #test1 test2が表示される
3行目は、関数です。
4行目は、関数の中に関数があります。ローカル関数です。
9,3,6,7,4,5行目の順に実行されます。
関連の記事