08 Python学習関数説明

17004 ワード

一、定義
定義:関数とは、文のセットを名前(関数名)でカプセル化することです.この関数を実行するには、その関数名を呼び出すだけです.
機能:
  • 重複コードを減らす
  • プログラムを拡張可能にする
  • は、プログラムのメンテナンスを容易にする
  • である.
    >>> def funcName(v):	#     ,  
    ...     print(v)
    ...
    >>> funcName("hello")	#    
    hello
    

    二、形参の説明
    通常、関数にパラメータを渡すには順序に従い、順序に従いたくない場合はキーパラメータを使用します.パラメータ名を指定するだけでいいですが、キーパラメータは位置パラメータの後に置かなければならないことを覚えておいてください.
    >>> def funcA(x,y,z):		#     
    ...     return x*y-z
    ...
    >>> funcA(1,2,3)				#      
    -1
    >>> funcA(1,z=3,y=2)		#                      
    -1
    

    可変パラメータの例
    非固定パラメータ
    関数が定義されているときにユーザーが何個のパラメータを入力したいか分からない場合は、非固定パラメータ*argsを使用します.
    >>> def stu_register(name,age,*args): # *args                 
    ...     print(name,age,args)
    ...
    >>> stu_register("Alex",22)
    Alex 22 ()
    
    >>> stu_register("Jack",32,"CN","Python")
    Jack 32 ('CN', 'Python')
    
    **kwargsもあります
    >>> def stu_register(name,age,*args,**kwargs): # *kwargs              dict  
    ...     print(name,age,args,kwargs)
    ...
    >>> stu_register("Alex",22)
    Alex 22 () {}
    >>> stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
    Jack 32 ('CN', 'Python') {'sex': 'Male', 'province': 'ShanDong'}
    

    まとめ:
    2.1、位置パラメータ:
    左から右の順序で定義されたパラメータ位置パラメータ:必須パラメータ位置実パラメータ:位置に基づいてパラメータ値を渡す
    2.2、キーワードパラメータ:
    key=valueの形式で定義された実パラメータは、位置に従ってパラメータ伝達値を指定する必要はありません.注意事項:
    ①==キーワード実パラメータは、位置実パラメータの右側にある必要があります==
    ②==同じパラメータに対して値を繰り返すことはできない==
    2.3、デフォルトパラメータ:
    パラメータは定義時にすでに値を付与されており、値を伝達しても値を伝達しなくてもよく、パラメータを位置パラメータとして定義し、変化の小さいパラメータをデフォルトパラメータ(パラメータ)として定義する必要があることが多い.注意事項:
    ①定義時にのみ1回付与
    ②**デフォルトパラメータの定義は、位置の右側にある**
    ③==デフォルトパラメータは通常、可変タイプとして定義すべきである==
    2.4、可変長パラメータ:
    可変長とは、実パラメータ値の個数が固定されていないことを意味します.実パラメータは位置とキーワードの2つの形式で定義されており、この2つの形式の可変長に対して、パラメータは2つのソリューションに対応して完全に保存されます.それぞれ*args、*kwargsです.
    5、キーワードパラメータの命名:*後に定義されたパラメータは、デフォルト値がある場合を除き、値が伝達されなければならず、キーワードの実パラメータの形式で伝達されなければならない.
    三、戻り値説明
    3.1戻り値タイプなし
    >>> def no_return(x):
    ...     print(x)
    ...
    >>> fun = no_return(10)	#    ,    fun  
    10
    >>> print(fun)	#    ,    None
    None
    

    3.2 return戻り値
    >>> def return_value(x,y):
    ...     return x+y
    ...
    >>> res = return_value(3,4)	#     ,   res
    >>> print(res)
    7
    

    3.3 yeildリターンジェネレータ
    >>> def yield_value(x):
    ...     for i in range(x):
    ...             name = yield i		#yield i =>        next   ,return i       send   ,     yield    name
    ...             print("Name is:%s" % name)
    ...
    
    
    >>> yv = yield_value(5)
    >>> yv.send(None)
    0
    >>> yv.send(None)
    Name is:None
    1
    >>> yv.send("hello")
    Name is:hello
    2
    >>> yv.send("world")
    Name is:world
    3
    >>> yv.send(1)
    Name is:1
    4
    >>> yv.send(1)
    Name is:1
    Traceback (most recent call last):
      File "", line 1, in <module>
    StopIteration
    >>> yv.send(2)
    Traceback (most recent call last):
      File "", line 1, in <module>
    StopIteration