***
6254 ワード
プログラミング言語では,関数はコードに対する最も基本的なパッケージであり,コード多重化を実現する直接的な体現である.Python言語では,関数の定義はキーワードdefで実現し,関数の戻り値はreturn文で実現する.例:
注意カッコの後ろのコロン(:)が抜けないようにreturn文がない場合は、関数が関数ブロックの最後の行に実行されても返され、値はNoneに戻ります.例:
注意:Pythonでは、関数もオブジェクトであり、関数名を変数に割り当てるか、戻り値を関数にすることができます.例:
上記コードの実行結果は2.具体的な分析は以下の通りである:my_func関数はカスタム関数で、Pythonの内蔵関数absを返します.absの機能は入力パラメータに絶対値を求めることです.
Pythonの関数のパラメータには、次のような遊び方があります.必須パラメータ デフォルトパラメータ 可変パラメータ キーワードパラメータ ネーミングキーワードパラメータは、以下、上述したパラメータについて順次説明する.
1.必須パラメータ(位置パラメータ)
必須パラメータは、関数定義時に入力するパラメータを決定し、入力パラメータの値は順番にコピーされます.例:
上記の関数では、nameが必須パラメータです.関数の定義に基づいて、関数には入力パラメータが必要であることがわかります.sayhello()を実行すると、次の異常が発生します.
関数に必要な位置パラメータ「name」が欠けていることを示します.
2.デフォルトパラメータ
関数を定義するときにデフォルトのパラメータが使用されている場合は、呼び出し中に適切なパラメータを指定しないことができます.例:
bug_が2回連続して呼び出されるとexample()の場合,戻り結果は[‘a’,‘a’]であることが分かった.2回目の呼び出しを説明するとarrの値はデフォルトで[‘a’]で変更されます.
3.可変パラメータ
関数を定義するときにパラメータの個数が不確定になる場合があります.たとえば、リストの各要素の和を計算するとき、リストの長さが不確定になる場合があります.この場合、可変パラメータを使用します.Pythonでは、tupleを使用して可変パラメータを格納します.たとえば、次のようにします.
このとき呼び出し関数
4.キーワードパラメータ
2つの星番号を使用してパラメータを1つのdictに収集することができます.パラメータの名前はdictのkeyで、対応するパラメータはdictのvalueです.例:
5.キーワードパラメータの命名
名前付きキーワードパラメータは、キーワードパラメータのkey値を制限するために使用されます.たとえば、関数がlocationとgenderの2つのキーワードパラメータのみを入力でき、任意の複数のキーワードパラメータを許可しない場合は、名前付きキーワードパラメータを使用します.名前付きキーワードパラメータは区切り記号として「*」を使用し、「*」の後のパラメータは名前付きキーワードパラメータとみなされます.たとえば
呼び出し
望ましくないキーワードパラメータ「favorite」が取得されたことを説明する.
まとめ
Python関数のパラメータのタイプは多くて、しかも混合して使うことができて、実際のプログラミングの中で多く練習する必要があって、多く体得します.上記の関数の実行結果はjupyter notebookでテストされます.
def my_func():
return 'hello'
注意カッコの後ろのコロン(:)が抜けないようにreturn文がない場合は、関数が関数ブロックの最後の行に実行されても返され、値はNoneに戻ります.例:
def my_func1():
print('hello')
注意:Pythonでは、関数もオブジェクトであり、関数名を変数に割り当てるか、戻り値を関数にすることができます.例:
def my_func2():
return abs
test = my_func2()
print(test(-2))
上記コードの実行結果は2.具体的な分析は以下の通りである:my_func関数はカスタム関数で、Pythonの内蔵関数absを返します.absの機能は入力パラメータに絶対値を求めることです.
test=my_func2()
という文は、返されたabs関数をtestに割り当て、test(-2)
を実行して実際にabs(-2)
を実行します.Pythonの関数のパラメータには、次のような遊び方があります.
1.必須パラメータ(位置パラメータ)
必須パラメータは、関数定義時に入力するパラメータを決定し、入力パラメータの値は順番にコピーされます.例:
def sayhello(name):
print('hello', name)
上記の関数では、nameが必須パラメータです.関数の定義に基づいて、関数には入力パラメータが必要であることがわかります.sayhello()を実行すると、次の異常が発生します.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
input -29-8dc54479c35f> in <module>()
----> 1 sayhello()
TypeError: sayhello() missing 1 required positional argument: 'name'
関数に必要な位置パラメータ「name」が欠けていることを示します.
2.デフォルトパラメータ
関数を定義するときにデフォルトのパラメータが使用されている場合は、呼び出し中に適切なパラメータを指定しないことができます.例:
def my_func3(name, gender='M'):
print(name,'is',gender)
name='Chris'
my_func3(name)
が呼び出されると、出力はChris is Mとなる.my_func3('Rachel',gender='F')
が呼び出されると、出力はRachel is F
となる.デフォルトパラメータには、可変タイプをデフォルトパラメータとしないことに注意してください.Pythonは関数定義時にデフォルトパラメータが計算されているからです.デフォルトパラメータが可変タイプの場合、プログラムの実行時にデフォルトパラメータが変更された場合、関数が再び呼び出されると、デフォルトパラメータは前回の計算の結果になります.典型的な例は次のとおりです.def bug_example(arr = []):
arr.append('a')
return arr
bug_が2回連続して呼び出されるとexample()の場合,戻り結果は[‘a’,‘a’]であることが分かった.2回目の呼び出しを説明するとarrの値はデフォルトで[‘a’]で変更されます.
3.可変パラメータ
関数を定義するときにパラメータの個数が不確定になる場合があります.たとえば、リストの各要素の和を計算するとき、リストの長さが不確定になる場合があります.この場合、可変パラメータを使用します.Pythonでは、tupleを使用して可変パラメータを格納します.たとえば、次のようにします.
def my_func4(*args):
print(args)
このとき呼び出し関数
my_func4('hello','world')
は('hello', 'world')
として出力され、tupleとして表現される.4.キーワードパラメータ
2つの星番号を使用してパラメータを1つのdictに収集することができます.パラメータの名前はdictのkeyで、対応するパラメータはdictのvalueです.例:
def my_func5(**kwargs):
print(kwargs)
my_func5(python='happy')
が呼び出された場合、出力は{'python': 'happy'}
となります.5.キーワードパラメータの命名
名前付きキーワードパラメータは、キーワードパラメータのkey値を制限するために使用されます.たとえば、関数がlocationとgenderの2つのキーワードパラメータのみを入力でき、任意の複数のキーワードパラメータを許可しない場合は、名前付きキーワードパラメータを使用します.名前付きキーワードパラメータは区切り記号として「*」を使用し、「*」の後のパラメータは名前付きキーワードパラメータとみなされます.たとえば
def my_func6(name, age, *, locaton, gender):
print(name,age,location,gender)
呼び出し
my_func6('chr1s', 18,favorite='basketball',gender='M')
時報エラー:---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
input -71-b52d1185c0b7> in <module>()
----> 1 my_func6('chr1s', 18,favorite='basketball',gender='M')
TypeError: my_func6() got an unexpected keyword argument 'favorite'
望ましくないキーワードパラメータ「favorite」が取得されたことを説明する.
まとめ
Python関数のパラメータのタイプは多くて、しかも混合して使うことができて、実際のプログラミングの中で多く練習する必要があって、多く体得します.上記の関数の実行結果はjupyter notebookでテストされます.