Pythonの各種関数の使用を詳しく解く
9535 ワード
関数は組織的で、繰り返し使用可能なコードであり、単一の関連する動作を実行するブロックに使用されます.関数は、アプリケーションとコードの再利用の高さに優れたモジュールを提供します.
私たちが知っているように、Pythonのprint()など多くの内蔵関数がありますが、独自の関数を作成することもできます.これらの関数をユーザー定義関数と呼びます.関数の定義
必要な機能を提供するために関数を定義できます.以下はPython関数を定義する簡単なルールです.関数ブロックは、キーワードdefの後に関数名と括弧()を開始するために使用される. 入力パラメータまたはパラメータは、これらのカッコ内に配置する必要があります.これらのカッコ内のパラメータを定義することもできます. 関数の最初の文は?オプションの宣言-関数またはドキュメント文字列のドキュメント文字列. 各関数のコードブロックは、コロン(:)で始まり、インデントされます. この文は[式]終了機能を返し、オプションで呼び出し元に式を返します.パラメータreturn文なしでNoneを返します.
構文:
デフォルトでは、パラメータは同じ順序で通知するように定義された位置の動作と必要性を有します.例:
これは最も簡単なPython関数形式です.この関数は、入力パラメータとして文字列を受け入れ、標準の画面に印刷します.
呼び出し関数
関数を定義して名前だけを指定し、機能と構造に含めるコードブロックのパラメータを指定します.
関数の基本構造が決定されると、他の関数から呼び出すか、Pythonプロンプトから直接呼び出すことで実行できます.次にprintme()関数の呼び出し例を示します.
上記のコードを実行すると、次の結果が得られます.
参照VS値転送
すべてのパラメータ(パラメータ)はPython言語で参照によって伝達される.これは、1つの関数でパラメータの値を変更した場合、変化も呼び出し関数に反映されることを意味します.例:
ここでは、渡されたオブジェクトの参照を維持し、同じオブジェクトに値を追加します.これにより、次の結果が得られます.
また,パラメータが参照伝達と参照によって呼び出された関数に上書きされる例もある.
パラメータmyList上のローカル関数changeme.関数内のmylistを変更してもmylistには影響しません.関数は機能しません.最後に、次の結果が得られます.
関数パラメータ:
パラメータのタイプを使用すると、次のように関数を呼び出すことができます.必須パラメータ キーワードパラメータ デフォルトパラメータ 可変長パラメータ 必須パラメータ:
必要なパラメータは、正しい位置順序に渡される関数のパラメータです.ここで、関数呼び出しのパラメータの数は、関数定義と完全に一致する必要があります.
関数printme()を呼び出します.パラメータを渡す必要があります.そうしないと、構文エラーが次のように表示されます.
上記のコードを実行すると、次の結果が得られます.
キーワードパラメータ:
キーワードパラメータは、関数呼び出しに関係します.関数呼び出しでキーワードパラメータを使用すると、呼び出し元はパラメータ名で識別されるパラメータです.
これは、Pythonインタプリタが指定したパラメータを使用して一致する値のキーワードを使用できるため、パラメータをスキップしたり、順序を外したりすることができます.キーワード呼び出しはprintme()関数で次のようにすることもできます.
上記のコードを実行すると、次の結果が得られます.
次の例では、より明確な画面を示します.ここではパラメータ秩序とは関係ないことに注意してください.
上記のコードを実行すると、次の結果が得られます.
デフォルトのパラメータ:
デフォルトパラメータは、関数呼び出しのパラメータ値が指定されていない場合のデフォルト値を仮定します.次の例では、デフォルトパラメータのアイデアを示します.ageがデフォルトで印刷され、値が送信されない場合は、次のようにします.
上記のコードを実行すると、次の結果が得られます.
可変長パラメータ:
定義された関数よりも関数を処理して複数のパラメータを指定する必要がある場合があります.これらのパラメータは可変長パラメータと呼ばれ、関数定義には名前が付けられず、必須のデフォルトパラメータとは異なります.
非キーワード可変パラメータの関数の一般的な構文は次のとおりです.
アスタリスク(*)が配置され、持つすべての非キーワード変数パラメータの値が変数名になります.関数呼び出し中に他のパラメータが指定されていない場合は、メタグループは空のままです.簡単な例を次に示します.
上記のコードを実行すると、次の結果が得られます.
匿名関数:
Lambdaキーワードを使用して、小さな匿名関数を作成できます.これらの関数は、defキーワードを使用して標準的に宣言されていないため、匿名と呼ばれます. Lambda形式は任意の数のパラメータをとることができるが、表現形式では1つの値しか返さない.コマンドまたは複数の式を含めることはできません. 匿名関数は、lambda式が必要であるため、印刷を直接呼び出すことはできません. lambda関数には独自のネーミングスペースがあり、パラメータリストやグローバルネーミングスペースなどよりも変数にアクセスできません. lambdaは、CまたはC++ではない関数の単行バージョンであるようですが、パフォーマンスの理由で伝達関数のスタック割り当てが1行に相当する宣言を呼び出すことを目的としています.
構文
Lambda関数の構文には、次のような単一の文のみが含まれます.
次の例では、関数lambda形式がどのように動作するかを説明します.
上記のコードを実行すると、次の結果が得られます.
return文:
この文は[式]終了機能を返し、オプションで呼び出し元に式を返します.パラメータreturn文なしでNoneを返します.
上記の例はすべて値を返していませんが、好きな場合は関数から値を返すことができます.
上記のコードを実行すると、次の結果が得られます.
変数の役割ドメイン:
プログラム内のすべての変数は、プログラム内のすべての場所にアクセスしない可能性があります.これは、宣言された変数に依存します.
変数の役割ドメインは、特定の識別子の一部にアクセスできるプログラムを決定します.Pythonの変数の2つの基本的なカテゴリ:グローバル変数 ローカル変数 グローバル変数とローカル変数:
これは、関数体の内部で定義された変数がローカル範囲を有し、それらの外部定義がグローバル範囲を有するものです.
ローカル変数は関数内部でのみ宣言およびアクセスできますが、グローバル変数はプログラム本体全体ですべての関数によってアクセスできます.関数を呼び出すと、宣言された変数が範囲に含まれます.簡単な例を次に示します.
上記のコードを実行すると、次の結果が得られます.
私たちが知っているように、Pythonのprint()など多くの内蔵関数がありますが、独自の関数を作成することもできます.これらの関数をユーザー定義関数と呼びます.関数の定義
必要な機能を提供するために関数を定義できます.以下はPython関数を定義する簡単なルールです.
構文:
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
デフォルトでは、パラメータは同じ順序で通知するように定義された位置の動作と必要性を有します.例:
これは最も簡単なPython関数形式です.この関数は、入力パラメータとして文字列を受け入れ、標準の画面に印刷します.
def printme( str ):
"This prints a passed string into this function"
print str
return
呼び出し関数
関数を定義して名前だけを指定し、機能と構造に含めるコードブロックのパラメータを指定します.
関数の基本構造が決定されると、他の関数から呼び出すか、Pythonプロンプトから直接呼び出すことで実行できます.次にprintme()関数の呼び出し例を示します.
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme("I'm first call to user defined function!");
printme("Again second call to the same function");
上記のコードを実行すると、次の結果が得られます.
I'm first call to user defined function!
Again second call to the same function
参照VS値転送
すべてのパラメータ(パラメータ)はPython言語で参照によって伝達される.これは、1つの関数でパラメータの値を変更した場合、変化も呼び出し関数に反映されることを意味します.例:
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist.append([1,2,3,4]);
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
ここでは、渡されたオブジェクトの参照を維持し、同じオブジェクトに値を追加します.これにより、次の結果が得られます.
Values inside the function: [10, 20, 30, [1, 2, 3, 4]]
Values outside the function: [10, 20, 30, [1, 2, 3, 4]]
また,パラメータが参照伝達と参照によって呼び出された関数に上書きされる例もある.
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4]; # This would assig new reference in mylist
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
パラメータmyList上のローカル関数changeme.関数内のmylistを変更してもmylistには影響しません.関数は機能しません.最後に、次の結果が得られます.
Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]
関数パラメータ:
パラメータのタイプを使用すると、次のように関数を呼び出すことができます.
必要なパラメータは、正しい位置順序に渡される関数のパラメータです.ここで、関数呼び出しのパラメータの数は、関数定義と完全に一致する必要があります.
関数printme()を呼び出します.パラメータを渡す必要があります.そうしないと、構文エラーが次のように表示されます.
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme();
上記のコードを実行すると、次の結果が得られます.
Traceback (most recent call last):
File "test.py", line 11, in
printme();
TypeError: printme() takes exactly 1 argument (0 given)
キーワードパラメータ:
キーワードパラメータは、関数呼び出しに関係します.関数呼び出しでキーワードパラメータを使用すると、呼び出し元はパラメータ名で識別されるパラメータです.
これは、Pythonインタプリタが指定したパラメータを使用して一致する値のキーワードを使用できるため、パラメータをスキップしたり、順序を外したりすることができます.キーワード呼び出しはprintme()関数で次のようにすることもできます.
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme( str = "My string");
上記のコードを実行すると、次の結果が得られます.
My string
次の例では、より明確な画面を示します.ここではパラメータ秩序とは関係ないことに注意してください.
#!/usr/bin/python
# Function definition is here
def printinfo( name, age ):
"This prints a passed info into this function"
print "Name: ", name;
print "Age ", age;
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" );
上記のコードを実行すると、次の結果が得られます.
Name: miki
Age 50
デフォルトのパラメータ:
デフォルトパラメータは、関数呼び出しのパラメータ値が指定されていない場合のデフォルト値を仮定します.次の例では、デフォルトパラメータのアイデアを示します.ageがデフォルトで印刷され、値が送信されない場合は、次のようにします.
#!/usr/bin/python
# Function definition is here
def printinfo( name, age = 35 ):
"This prints a passed info into this function"
print "Name: ", name;
print "Age ", age;
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" );
printinfo( name="miki" );
上記のコードを実行すると、次の結果が得られます.
Name: miki
Age 50
Name: miki
Age 35
可変長パラメータ:
定義された関数よりも関数を処理して複数のパラメータを指定する必要がある場合があります.これらのパラメータは可変長パラメータと呼ばれ、関数定義には名前が付けられず、必須のデフォルトパラメータとは異なります.
非キーワード可変パラメータの関数の一般的な構文は次のとおりです.
def functionname([formal_args,] *var_args_tuple ):
"function_docstring"
function_suite
return [expression]
アスタリスク(*)が配置され、持つすべての非キーワード変数パラメータの値が変数名になります.関数呼び出し中に他のパラメータが指定されていない場合は、メタグループは空のままです.簡単な例を次に示します.
#!/usr/bin/python
# Function definition is here
def printinfo( arg1, *vartuple ):
"This prints a variable passed arguments"
print "Output is: "
print arg1
for var in vartuple:
print var
return;
# Now you can call printinfo function
printinfo( 10 );
printinfo( 70, 60, 50 );
上記のコードを実行すると、次の結果が得られます.
Output is:
10
Output is:
70
60
50
匿名関数:
Lambdaキーワードを使用して、小さな匿名関数を作成できます.これらの関数は、defキーワードを使用して標準的に宣言されていないため、匿名と呼ばれます.
構文
Lambda関数の構文には、次のような単一の文のみが含まれます.
lambda [arg1 [,arg2,.....argn]]:expression
次の例では、関数lambda形式がどのように動作するかを説明します.
#!/usr/bin/python
# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;
# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
上記のコードを実行すると、次の結果が得られます.
Value of total : 30
Value of total : 40
return文:
この文は[式]終了機能を返し、オプションで呼び出し元に式を返します.パラメータreturn文なしでNoneを返します.
上記の例はすべて値を返していませんが、好きな場合は関数から値を返すことができます.
#!/usr/bin/python
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2
print "Inside the function : ", total
return total;
# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total
上記のコードを実行すると、次の結果が得られます.
Inside the function : 30
Outside the function : 30
変数の役割ドメイン:
プログラム内のすべての変数は、プログラム内のすべての場所にアクセスしない可能性があります.これは、宣言された変数に依存します.
変数の役割ドメインは、特定の識別子の一部にアクセスできるプログラムを決定します.Pythonの変数の2つの基本的なカテゴリ:
これは、関数体の内部で定義された変数がローカル範囲を有し、それらの外部定義がグローバル範囲を有するものです.
ローカル変数は関数内部でのみ宣言およびアクセスできますが、グローバル変数はプログラム本体全体ですべての関数によってアクセスできます.関数を呼び出すと、宣言された変数が範囲に含まれます.簡単な例を次に示します.
#!/usr/bin/python
total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2; # Here total is local variable.
print "Inside the function local total : ", total
return total;
# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total
上記のコードを実行すると、次の結果が得られます.
Inside the function local total : 30
Outside the function global total : 0