Python関数パラメータ--キーワードパラメータ、デフォルトパラメータ、およびパラメータの反転プロセス

2360 ワード

1、関数の概要
関数は、ある動作を実行し、値を返す可能性のある一連のコードであり、関数のパラメータはカッコ内にあります.ある関数が実行可能かどうかを判断するには、組み込まれたcallable関数で判断します(callableはPython 3.0では使用されなくなりhasattr式が必要です).判断過程は以下の通りである.
import math
x=1
y=math.sqrt

callable(x)  #  False
callable(y)  #  True

     
2、関数の文書文字列
関数の_doc__プロパティを使用して、関数のドキュメント文字列を取得します.関数のドキュメント文字列は、関数の先頭に書かれた文字列であり、関数機能などを説明するために使用されます.次の関数の'this function is just a test.'ドキュメント文字列です.次の関数ドキュメント文字列を取得する方法はtest 1._です.doc__,mathモジュールにおけるsqrt関数のドキュメント文字列を取得する方法は、math.sqrt.__doc__
def test1():
    'this function is just a test.'
    pass

3、関数の戻り
すべての関数に戻り値があるわけではありませんが、すべての関数は戻ります.関数に戻り値がない場合はNoneを返します.関数が複数の数値を返す必要がある場合は、returnでメタグループ、リスト、辞書などを返すことで複数の数値を含めることができます.
4、パラメータ値の変更
関数が実パラメータを取得すると、パラメータ内で実パラメータを変更できるものもあれば、変更できないものもあります.パラメータのタイプに応じて変更できるかどうかは、関数内でパラメータに値を再割り当ててパラメータの値を変更できるわけではありません.
文字列、数値、メタグループは可変ではありません.つまり、変更できません(つまり、関数内で入力されたパラメータを本当に変更することはできません).パラメータがリスト、辞書の場合は変更できます.文字列、数値、メタグループはCの値伝達に類似し、リスト、辞書はcの参照伝達に類似している.
パラメータがリストであり、入力パラメータを変更したくない場合は、リスト全体のスライスによってリストのコピーを入力できます.すなわち、nameがリストである場合、name[:]が入力され、関数内でパラメータが変更されないようにします.
5、キーワードパラメータとデフォルトパラメータ
通常のパラメータを位置パラメータと呼びます.場合によっては、パラメータが多すぎて順序がよく覚えられない場合があるので、パラメータ名を使用してパラメータを提供する方法で解決します.すなわち、関数を呼び出すときに、パラメータを渡すには、パラメータ名=実パラメータ名を使用します.このように打つ字は多くなりましたが、もっとはっきりしています.
デフォルトパラメータは、パラメータにデフォルト値を指定します.つまり、関数を定義するときにパラメータにデフォルト値を指定します.
注意:位置パラメータとキーワードパラメータは併用できますが、位置パラメータが前にある必要があります.
6、任意の数のパラメータを使用する
余分な位置パラメータを処理し、関数を定義するときにパラメータを指定し、前にアスタリスクを付けることができます.このように関数は、パラメータをメタグループと呼び、すべての余分な位置パラメータをメタグループに配置します.
余分なキーワードパラメータを処理します.関数を定義するときにパラメータを指定し、その前に2つのアスタリスクを追加できます.これにより、関数はパラメータを辞書として、すべての余分なキーワードパラメータを辞書に配置します.
7、反転過程
関数に提供されるパラメータがメタグループまたは辞書の場合、2つの場合があります.
一、関数定義時にパラメータの前に*または**を使用してパラメータを収集する.では、この関数にメタグループまたは辞書を渡す場合は、実パラメータである前に*または**を加えて実パラメータを反転する必要があります.
二、関数定義の場合、パラメータは普通のパラメータです.では、この関数にメタグループまたは辞書を渡す場合は、実パラメータの前に*または**を付ける必要はありません.直接、関数内でこのパラメータをメタグループまたは辞書として使用します.
次のようになります.
def with_twostars(**params):
    print params['name']

def with_nostar(param2):
    print param2['name']
    
#         
var1={'name':'jinglingshu','sex':'female'}
with_twostars(**var1)  #        
with_nostar(var1)