08 Python学習関数説明
17004 ワード
一、定義
定義:関数とは、文のセットを名前(関数名)でカプセル化することです.この関数を実行するには、その関数名を呼び出すだけです.
機能:重複コードを減らす プログラムを拡張可能にする は、プログラムのメンテナンスを容易にする である.
二、形参の説明
通常、関数にパラメータを渡すには順序に従い、順序に従いたくない場合はキーパラメータを使用します.パラメータ名を指定するだけでいいですが、キーパラメータは位置パラメータの後に置かなければならないことを覚えておいてください.
可変パラメータの例
非固定パラメータ
関数が定義されているときにユーザーが何個のパラメータを入力したいか分からない場合は、非固定パラメータ
まとめ:
2.1、位置パラメータ:
左から右の順序で定義されたパラメータ位置パラメータ:必須パラメータ位置実パラメータ:位置に基づいてパラメータ値を渡す
2.2、キーワードパラメータ:
key=valueの形式で定義された実パラメータは、位置に従ってパラメータ伝達値を指定する必要はありません.注意事項:
①==キーワード実パラメータは、位置実パラメータの右側にある必要があります==
②==同じパラメータに対して値を繰り返すことはできない==
2.3、デフォルトパラメータ:
パラメータは定義時にすでに値を付与されており、値を伝達しても値を伝達しなくてもよく、パラメータを位置パラメータとして定義し、変化の小さいパラメータをデフォルトパラメータ(パラメータ)として定義する必要があることが多い.注意事項:
①定義時にのみ1回付与
②**デフォルトパラメータの定義は、位置の右側にある**
③==デフォルトパラメータは通常、可変タイプとして定義すべきである==
2.4、可変長パラメータ:
可変長とは、実パラメータ値の個数が固定されていないことを意味します.実パラメータは位置とキーワードの2つの形式で定義されており、この2つの形式の可変長に対して、パラメータは2つのソリューションに対応して完全に保存されます.それぞれ*args、*kwargsです.
5、キーワードパラメータの命名:*後に定義されたパラメータは、デフォルト値がある場合を除き、値が伝達されなければならず、キーワードの実パラメータの形式で伝達されなければならない.
三、戻り値説明
3.1戻り値タイプなし
3.2 return戻り値
3.3 yeildリターンジェネレータ
定義:関数とは、文のセットを名前(関数名)でカプセル化することです.この関数を実行するには、その関数名を呼び出すだけです.
機能:
>>> 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