関数は、単一または関連する関数を実装するために使用される、整理された再利用可能なコード セグメントです。関数を使用すると、アプリケーションのモジュール性とコードの再利用が向上します。自分で作成した関数は、ユーザー定義関数と呼ばれます。 関数定義の仕様: 1. 関数コードブロックは def キーワードで始まり、その後に関数識別名と括弧 () が続きます。
2. 入力パラメータと独立変数は括弧の間に配置する必要があり、括弧の間のスペースをパラメータの定義に使用できます。
3. 関数のステートメントの最初の行では、関数の説明を保存するために使用されるドキュメント文字列をオプションで使用できます。
4. 関数の内容はコロンで始まり、インデントされます。
5.return [式] は関数を終了し、オプションで呼び出し元に値を返します。式を指定せずに返すことは、None を返すことと同じです。
関数定義の構文: def 関数名 (仮パラメータ): 関数本体。デフォルトでは、パラメータ値とパラメータ名は関数宣言で定義された順序で一致します。 例: #仮パラメータは定義できません>>> def
show():... Print('show fun')...>>> 面積を計算する簡単な関数:>>> def
area(height,width):... a = height*width... return a...>>> 関数呼び出し 関数呼び出し関数名()を使用し、関数名を直接使用した場合は、関数の物理コンテンツアドレスが返されます。()を追加すると、実行された関数の仮パラメータと実パラメータを表します>>> area(height,width):... a = height*width... return a...>>> area(4,5)20 この例では、高さと幅が仮パラメータです。関数の構造とロジックを定義します。次の 4 と 5 は実パラメータです。これらは、関数を呼び出すときにユーザーによって実際に渡されるパラメータです。実パラメータの数は、呼び出し時に仮パラメータと一致している必要があります。 、、、仮パラメータの具体的な値は、実パラメータが渡される順序に従って 1 対 1 に対応します。たとえば、4 は高さに対応し、5 は幅に対応します。キーワード パラメータ(指定されたパラメータ)を使用します。関数呼び出し時のパラメータの順序が宣言と矛盾することを許可します。具体的な使用法は次のとおりです>>>
def area(height,width):... a = height*width... return a ...>>>
area(width = 5,height = 4 )# 関数を呼び出すときに、パラメータがない場合はデフォルトのパラメータの値を指定するだけです。が渡されると、デフォルトのパラメータが使用されます。デフォルト パラメータはすべての仮パラメータの最後に定義する必要があります>>>
def stu(name,age,grade=3):... Print('name は %s,age は %s,grade は %s ' %
(name,age,grade))...>>>
stu('ian',10) #ここでは成績パラメータは渡されません、デフォルトで成績が使用されます =
3name is
ian,年齢は 10、学年は 3>>>
stu('isha',9,4)名前は
isha、年齢は 9、学年は 4 動的パラメータ #動的パラメータ 01、受信したすべての実際のパラメータを Def に追加します元図の main2(*arg): print(arg,type(arg))main2(1,2,3,4) #動的パラメータ 02、すべての受信実パラメータを辞書に追加します def main3(* *kwargs): print(kwargs,type(kwargs))main3(k1=12,k2='ian') #動的パラメータ03、上記2つの項目を組み合わせたもの def
main4(*args,**kwargs): print(args, type( args)) print(kwargs,type(kwargs))main4(1,2,k1=12,k2='ian') #上記の仮パラメータとここでの実パラメータの順序を逆にすることはできません。逆にしないとエラーが発生します。 #動的パラメータ 4. 実パラメータが変数の場合、動的パラメータでの指定方法--->*def
main4(*args,**kwargs): print(args,type(args)) を使用print(kwargs,type(kwargs) )m = [1,2]n =
{'k1':12,'k2':'ian'}main4(*m,**n) 要約: Python 関数は非常に柔軟です実装可能なパラメータの形状 単純な呼び出しでは、非常に複雑なパラメータを渡すこともできます。デフォルトのパラメータは不変オブジェクトを使用する必要があります。変更可能なオブジェクトの場合、動作中に論理エラーが発生します。変数パラメーターとキーワード パラメーターを定義する構文に注意してください。 *args は変数パラメーター、args はタプルを受け取ります。 **kwargs はキーワード パラメーター、kwargs は辞書を受け取ります。 *args と **kwargs の使用は Python の規則です。もちろん、他のパラメーター名も使用できますが、この規則を使用するのが最善です。 匿名関数 Python は、lambda
を使用して匿名関数を作成します。いわゆる匿名とは、関数を定義するために標準形式の def
ステートメントを使用しなくなることを意味します。 1.lambda は単なる式であり、関数本体は def よりもはるかに単純です。
2.ラムダの本体はコードブロックではなく式です。ラムダ式にカプセル化できるロジックは限られています。
3.lambda
関数には独自の名前空間があり、独自のパラメーター リストの外やグローバル名前空間内のパラメーターにはアクセスできません。
4. ラムダ関数は 1 行しか記述できないように見えますが、C や C++ のインライン関数と同等ではありません。後者の目的は、スタック メモリを占有せずに小さな関数を呼び出して、動作効率を高めることです。
匿名関数の構文 ラムダ関数の構文には、次のようなステートメントが 1 つだけ含まれます: lambda [arg1
[,arg2,....argn]]:expression 例:>>>
su = lambda a,b,c: a + b + c>>> su(1,2,3) 6 return ステートメント return は関数を終了するために使用されます。 return [expression] を使用すると、関数を終了するときに式が返されます。 def
area(height,width):... a = height*width... return a...>>> ar =
area(4,5)>>>
print('area is',ar)area は 20 個のグローバル変数とローカル変数です関数定義内で変数を宣言すると、関数の外部にある同じ名前を持つ他の変数とは関係がありません。つまり、変数名は関数に対してローカルになります。これを変数のスコープと呼びます。すべての変数のスコープは、名前が定義されている場所から始まる、変数が定義されているブロックです。 ローカル変数: def func(x): print ('x is',x) x=2 print ('Changed local x to',x) x=50func(x)print ('x is Still',x) 結果is : x は 50 ローカル x を 2x は 50 に変更しました グローバル ステートメントの使用 関数の外で定義された変数に値を割り当てたい場合は、その変数名がローカルではなくグローバルであることを Python に指示する必要があります。この機能を実現するには、global ステートメントを使用します。 global ステートメントがなければ、関数の外で定義された変数に値を代入することはできません。 def func(): global x print ('x is',x) x=2 print ('Changed local x to',x) x=50func()print ('x is Still',x) 結果は次のようになります: x is 50Changed local x to 2x is Still 2 #global ステートメントは、x がグローバルであることを宣言するために使用されるため、関数内で x に値を代入すると、関数外の x の値も直接変更されます
以上がPythonの基本内容:関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。