はじめにPython関数を使用する

     関数は、特定のタスクを完了するために使用される名前の付いたコードブロックです。関数によって定義された特定のタスクを実行するには、関数を呼び出すことができます。プログラムで同じタスクを複数回実行する必要がある場合は、

タスクを完了するためにコードを繰り返し記述する必要はありませんが、タスクを実行する関数を呼び出して、Pythonにコードを実行させるだけです。

1.関数を定義します

      (1)関数の定義には、次の規則があります。

  • 関数コードブロックは、def キーワードで始まり 、関数識別子名と括弧()が続き ます。
  • 入力パラメータと独立変数は括弧の間に配置する必要があり、括弧を使用してパラメータを定義できます。
  • 関数の最初の行では、オプションでdocstringを使用できます。これは関数の説明を格納するために使用されます。
  • 関数の内容はコロン:で始まり、インデントされます。
  • return [expression] 関数を終了し、オプションで呼び出し元に値を返します。式なしで返すことは、Noneを返すことと同じです。

   

簡単な使用例を次に示します。

def greet_user():
    """显示简单的问候语"""
    print("Hello!")


greet_user()

  (2)実際のパラメータと正式なパラメータ

     以下はテストケースです。

def sum_num(a, b):
    return a + b


print(sum_num(1, 2))

上記のプログラムでは、変数aとbは正式なパラメーターであり、sum_numで定義されたローカル変数であり、1と2は実際のパラメーターであり、実際のパラメーターは関数が呼び出されたときに関数に渡される情報です。

関数sum_numを呼び出すと、1と2が渡されます。これは、a = 1、b = 2を実行するのと同じです。このとき、aに格納されている値は1で、bに格納されている値は2です。

2.実際のパラメーターを渡します

       関数定義には複数の正式なパラメーターが含まれる場合があるため、関数呼び出しには複数の実際のパラメーターが含まれる場合もあります。実際のパラメータを関数に渡す方法はたくさんあります。位置パラメータを使用できます。

これには、実際のパラメーターの順序が正式なパラメーターの順序と同じである必要があります。キーワードの実際のパラメーターも使用できます。各実際のパラメーターは変数の名前と値で構成され、リストと辞書も使用できます。

    (1)実際のパラメータを配置する

              関数を呼び出すとき、Pythonは、関数呼び出しの各実際のパラメーターを関数定義の正式なパラメーターに関連付ける必要があります。このため、関連付ける最も簡単な方法は、実際のパラメーターの順序に基づいています。このタイプの関連付けは、位置引数と呼ばれます。

def sum_num(a, b):
    print(a)
    print(b)
    return a + b


print(sum_num(1, 2))

       上記のコードでは、関数を呼び出すときに1と2を渡し、呼び出された関数はパラメーターの順序で1をaに、2をbに直接割り当てます。着信パラメータが2と1の場合、順番にaの値は2、bの値は1です。

(2)キーワード引数

        キーワード引数は、関数に渡される名前と値のペアです。名前と値は実際のパラメーターに直接関連付けられているため、実際のパラメーターを関数に渡すときに混乱することはありません。

キーワード引数を使用すると、関数呼び出しで実際の引数の順序を考慮する必要がなくなり、関数呼び出しで各値の目的が明確に示されます。

def sum_num(a, b):
    print(a)
    print(b)
    return a + b


print(sum_num(a=1, b=2))

print(sum_num(b=2, a=1))

実際のパラメーターでは、a = 1、b = 2を直接設定します。順序に関係なく、特定の値を正式なパラメーターに関連付けたため、同じ結果を得ることができます。

(3)デフォルト値

        関数を作成するときに、各正式なパラメーターにデフォルト値を割り当てることができます。呼び出し元の関数で実際のパラメーターが正式なパラメーターに提供される場合、Pythonは指定された実際のパラメーター値を使用します。それ以外の場合、正式なパラメーターのデフォルト値を使用します。したがって、

仮パラメータにデフォルト値を割り当てた後、対応する実際のパラメータを関数呼び出しで省略できます。デフォルト値を使用すると、関数呼び出しを簡素化し、関数の一般的な使用法を明確に示すことができます。

        デフォルト値を使用する場合、デフォルト値のないパラメーターを最初にパラメーターリストにリストする必要があり、次にデフォルト値のある実際のパラメーターをリストする必要があることに注意してください。これにより、Pythonはロケーション引数を正しく解釈できます。

def sum_num(a, b=2):
    print(a)
    print(b)
    return a + b


print(sum_num(1))

上記のコードでは、関数を呼び出すと、1のみが渡されます。このとき、1はデフォルト値なしで自動的に1と一致し、bはデフォルト値2を使用します。

 (4)可変長パラメーター

     最初に宣言されたよりも多くのパラメーターを処理できる関数が必要になる場合があります。これらのパラメーターは不定長パラメーターと呼ばれ、上記の3種類のパラメーターとは異なり、宣言時に名前が付けられません。

def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vartuple)
 
# 调用printinfo 函数
printinfo( 70, 60, 50 )

関数の呼び出し時にパラメーターが指定されていない場合、それは空のタプルです。名前のない変数を関数に渡すこともできません。次の例:

def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return
 
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )

アスタリスクが2つあるパラメータ**もあります。アスタリスクが2つあるパラメータ**は辞書の形式でインポートされます。

def printinfo( arg1, **vardict ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vardict)
 
# 调用printinfo 函数
printinfo(1, a=2,b=3)

   (5)可変および不変オブジェクトの転送

           pythonでは、型はオブジェクトに属し、変数には型がありません。

a=[1,2,3]

a="Runoob"

上記のコードでは、[1,2,3] はList型、「Runoob」 はString型、変数aはno型です。これは、List型のオブジェクトを指すことができるオブジェクト(ポインタ)への単なる参照です。 String型のオブジェクトを指します。

可変および不変のオブジェクト

pythonでは、文字列、タプル、数字は変更できないオブジェクトですが、list、dictなどは変更できるオブジェクトです。

  • 不変タイプ:変数にa = 5が割り当てられ  後、a = 10が割り当てられ ます。ここでは、int値オブジェクト10が実際に生成され、aがそれを指すようになり、5が破棄されます。これは、aの値を変更せずに、新しく生成するのと同じです。 。

  • 変数タイプ:変数割り当て la = [1,2,3,4] そして割り当て la [2] = 5 は、リストlaの3番目の要素の値を変更することです。la自体は変更されず、内部値の一部にすぎません。変更されました。

Python関数パラメーターの受け渡し:

  • 不変タイプ:整数、文字列、タプルなどのC ++のような値の転送。たとえば、fun(a)の場合、aの値のみが渡され、オブジェクト自体は影響を受けません。fun(a))内でaの値が変更されると、新しいaが生成されます。

  • 変数タイプ:リストや辞書など、C ++のような参照による受け渡し。たとえば、fun(la)は、実際にはlaを通過し、funの外側のlaも変更後に影響を受けます。

pythonのすべてがオブジェクトです。厳密に言えば、値による受け渡しや参照による受け渡しとは言えません。不変のオブジェクトの受け渡しと可変のオブジェクトの受け渡しと言う必要があります。

3.戻り値

    関数は常に出力を直接表示するとは限りません。代わりに、一部のデータを処理して値または値のセットを返すことができます。関数によって返される値は、戻り値と呼ばれます。関数では、returnステートメントを使用して、関数を呼び出したコード行に値を返すことができます。

戻り値を使用すると、プログラムの重い作業のほとんどを関数に移動して完了することができるため、メインプログラムが簡素化されます。

(1)単純な値を返す

       

def sum_num(a, b):
    return a + b


print(sum_num(1, 2))

(2)辞書とリストに戻る

         関数は、リストや辞書などのより複雑なデータ構造を含む、あらゆるタイプの値を返すことができます

def sum_num(a, b):
    ls = [a, b]
    return ls


print(sum_num(1, 2))

4.匿名機能

      Pythonはラムダを使用して匿名関数を作成します。

      いわゆる匿名とは、関数がdefステートメントなどの標準形式で定義されなくなったことを意味します。

  • Lambdaは単なる式であり、関数本体はdefよりもはるかに単純です。
  • ラムダの本体は式であり、コードブロックではありません。ラムダ式にカプセル化できるのは、限られたロジックのみです。
  • ラムダ関数には独自の名前名があり、パラメーターリストの外部またはグローバル名前名内のパラメーターにアクセスできません。
  • ラムダ関数は1行しか書き込むことができませんが、CまたはC ++インライン関数と同等ではありません。後者の目的は、小さな関数を呼び出すときにスタックメモリを占有しないことで、操作効率を向上させることです。
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

 

おすすめ

転載: blog.csdn.net/Light20000309/article/details/112901447