pythonノート19_関数パラメータ
6094 ワード
主な内容:小ターゲット:関数パラメータと呼び出し を完了する主な内容:関数パラメータ、関数呼び出し この文章を読み終わったら、関数パラメータがまだ分かりません.あなたは私を探しに来て、私はあなたを打たないことを保証して、私はあなたに100のお年玉をあげます.
1.関数定義
前の文章では、関数を紹介しましたが、今回は詳しく紹介します.
1.1関数の定義:関数呼び出し:関数名+()、例えばfunc() 関数定義キー:def、関数名、関数パラメータ; 関数デフォルト戻り値None, 加算戻り値を表示return を使用
1.2関数命名規則:
従う:可読性がよく、関数名で関数機能を理解することができる.共通関数命名仕様: 各単語の頭文字は大文字で、例えばGetValueByID 頭文字小文字、残りの各単語頭文字大文字:getValueById 単語と下線の組み合わせ、例えばget_value_by_id
具体的な命名規則は会社の規定に従うことができる.
2.関数の役割:パッケージ、モジュール化 コード多重 3.関数パラメータと呼び出し
関数はパラメータを持ってもよいし、パラメータを持っていなくてもよい.パラメータ関数によって呼び出し方が異なります.
3.1無パラメトリック関数と呼び出しパラメータなし関数:関数定義時にパラメータがありません. 適用シーン:タイムスタンプの生成、乱数の生成など 例:0~10000間の乱数 呼び出しプロシージャ:関数名+() 3.2パラメータ付き関数
一般的には、関数にパラメータを加えた除算関数です.
x,yを形参と呼ぶ関数呼び出し:直接例: 関数呼び出しの注意点:
1.パラメータの整合性、パラメータの数と関数の定義は常に2.付与順序:前後順に順次付与、x=10、y=2
3.3デフォルトパラメータ付き関数関数定義、パラメータにデフォルト値を追加します.例: 注意点:デフォルト値パラメータ付きで、デフォルト値なしの後に置かなければならないエラー定義方法: 関数呼び出し: 3.4関数呼び出し:キーワードパラメータ使用関数パラメータは比較的多く、順序エラーを避けるために、関数を呼び出す際にキーワードパラメータを使用することができる:一例: エラーの使用方法: である.
4.可変長パラメータ
いくつかの関数とメソッドでは、次の方法で関数を定義します.
質問:*args、*kwargsはそれぞれ何ですか?
4.1可変長非キーワードパラメータ*args:関数の可変長非キーワードパラメータ 直接例を見てみましょう:和を求める関数:
結果:3
需要:mySumは複数の数値と、例えば2個の数、3個の数、N個の数を計算して、どのように実現しますか?*argsパラメータを使用してmySum関数を再定義できます.
結果:コード分析:
mySumにおける*argsの役割:可変長非キーワードパラメータを表す;mySum(1,2,3,4,5)呼び出しでは,パラメータ処理手順は以下の通りである.x =1, y =2;他のパラメータは*args処理により、3,4,5を1つのメタグループに収集する.
検証:
結果:
出力結果から次のように表示されます.
*argsは1つのメタグループsum(args)で、メタグループに対して和を求めます
4.2関数呼び出しでmySum(1,2,args)のargsとはどういう意味ですか?
まず例を見てみましょう.質問:*valuesとはどういう意味ですか.
関数呼び出しでmySum(10,20,*values)の*valuesは、valuesを分散して数値にし、新しいメタグループに再収集するプロセスです.
ケース:
結果:
4.3可変長キーワードパラメータ
可変長キーワードパラメータは、マルチ条件クエリーなど、シーンが比較的多い.
例:
質問:**kwargsってどういう意味ですか?可変長キーワードパラメータ、比較*args理解;
関数を呼び出すと、入力されたキーワードパラメータの数が不定で、使用する必要があります:**kwargs;例:
結果:
次のように表示されます.
kwargsは辞書:**kwargs:math,chineseおよび対応する値を辞書に整理します.
4.4関数呼び出し中:**kwargsどういう意味ですか?
例を直接見ます.
結果:
関数呼び出しでmyfunc(1,'sun',**info)解析:
**infoはinfoをばらばらにして、簡単にキーワードパラメータになるように理解します:chinese=90 myfuncそれを辞書kwargsに再整理します
ここでは,可変長パラメータと呼び出しプロセスについてある程度理解した.
4.5関数定義パラメータ順序:
エラーを回避するには、次のようにします.
例1:
結果:
例2:
結果:
まとめ:関数定義注意パラメータ:パラメータなし、パラメータなし、デフォルト値パラメータ付き、可変長パラメータ; 関数呼び出し:呼び出し元の入力パラメータは関数定義と一致し、Python関数構文規則に従う.
1.関数定義
前の文章では、関数を紹介しましたが、今回は詳しく紹介します.
1.1関数の定義:
def funcname(args):
pass
1.2関数命名規則:
従う:可読性がよく、関数名で関数機能を理解することができる.
具体的な命名規則は会社の規定に従うことができる.
2.関数の役割:
関数はパラメータを持ってもよいし、パラメータを持っていなくてもよい.パラメータ関数によって呼び出し方が異なります.
3.1無パラメトリック関数と呼び出し
import random
#gerRandom():
def getRandom():
return random.randint(0,10000)
import random
#gerRandom():
def getRandom():
return random.randint(0,10000)
print(getRandom())
結果:9744 一般的には、関数にパラメータを加えた除算関数です.
# ,x,y
def myDiv(x, y):
return x/y
x,yを形参と呼ぶ
# ,x,y
def myDiv(x, y):
return x/y
print(myDiv(10,2))
結果:5.0 1.パラメータの整合性、パラメータの数と関数の定義は常に2.付与順序:前後順に順次付与、x=10、y=2
3.3デフォルトパラメータ付き関数
#y 1
def mydiv(x, y=1):
return x/y
def mydiv(y=1,x):
return x/y
エラー:SyntaxError: non-default argument follows default argument
def mydiv(x, y=1):
return x/y
#x=2,y 1
print(mydiv(2))
#x=2,y=2,y=1
print(mydiv(2,2))
結果:2.0,1.0 def myDiv(x,y):
return x/y
#
print(myDiv(2,1))
#
print(myDiv(y=10,x=2))
#y
print(myDiv(5,y=2))
結果:2.0
0.2
2.5
# , ,
myDiv(y = 5,2)
myDiv(x=5, 2)
# , x,
myDic(2,x=4)
以上が関数の基本定義と呼び出し4.可変長パラメータ
いくつかの関数とメソッドでは、次の方法で関数を定義します.
def myfunc(x, *args, **kwargs): pass
質問:*args、*kwargsはそれぞれ何ですか?
4.1可変長非キーワードパラメータ
def mySum(x,y):
return x+y
print(mySum(1,2))
結果:3
需要:mySumは複数の数値と、例えば2個の数、3個の数、N個の数を計算して、どのように実現しますか?*argsパラメータを使用してmySum関数を再定義できます.
def mySum(x,y,*args):
return x+y+sum(args)
# 2
print(mySum(1,2))
#
print(mySum(1,2,3))
#5
print(mySum(1,2,3,4,5))
結果:
3
6
15
mySumにおける*argsの役割:可変長非キーワードパラメータを表す;mySum(1,2,3,4,5)呼び出しでは,パラメータ処理手順は以下の通りである.x =1, y =2;他のパラメータは*args処理により、3,4,5を1つのメタグループに収集する.
検証:
def mySum(x,y,*args):
# args
print('*args:', args, type(args))
return x+y+sum(args)
#
mySum(1,2)
mySum(1,2,3,4)
結果:
*args: ()
*args: (3, 4)
出力結果から次のように表示されます.
*argsは1つのメタグループsum(args)で、メタグループに対して和を求めます
4.2関数呼び出しでmySum(1,2,args)のargsとはどういう意味ですか?
まず例を見てみましょう.
values = [1,2,3]
mySum(10,20, *values)
関数呼び出しでmySum(10,20,*values)の*valuesは、valuesを分散して数値にし、新しいメタグループに再収集するプロセスです.
ケース:
def mySum(x,y,*args):
print('*args:', args, type(args))
return x+y+sum(args)
v1 = (3,4)
v2 = [5,6]
#*v1: (3,4)->3,4, :mysum(1,2,4,5)
print(mySum(1,2, *v1))
#*v2: [5,6]->5,6, :mysum(1,2,5,6)
print(mySum(1,2, *v2))
結果:
*args: (3, 4)
10
*args: (5, 6)
14
4.3可変長キーワードパラメータ
可変長キーワードパラメータは、マルチ条件クエリーなど、シーンが比較的多い.
例:
def func(x,y,**kwargs):pass
質問:**kwargsってどういう意味ですか?可変長キーワードパラメータ、比較*args理解;
関数を呼び出すと、入力されたキーワードパラメータの数が不定で、使用する必要があります:**kwargs;例:
def myfunc(sid, name, **kwargs):
print(kwargs, type(kwargs))
#math,chinese->{math:100,chinese:80}
myfunc(1,'sun', math=100,chinese=80)
#math->{math:70}
myfunc(2,'li', math=70)
結果:
{'math': 100, 'chinese': 80}
{'math': 70}
次のように表示されます.
kwargsは辞書:**kwargs:math,chineseおよび対応する値を辞書に整理します.
4.4関数呼び出し中:**kwargsどういう意味ですか?
例を直接見ます.
def myfunc(sid, name, **kwargs):
print(kwargs, type(kwargs))
# kwargs
print(kwargs.get('chinese'))
info = {'chinese':90}
#**info -> chinese=90
myfunc(1,'sun',**info)
#
myfunc(1,'sun',info)
結果:
{'chinese': 90}
90
TypeError: myfunc() takes 2 positional arguments but 3 were given
関数呼び出しでmyfunc(1,'sun',**info)解析:
**infoはinfoをばらばらにして、簡単にキーワードパラメータになるように理解します:chinese=90 myfuncそれを辞書kwargsに再整理します
ここでは,可変長パラメータと呼び出しプロセスについてある程度理解した.
4.5関数定義パラメータ順序:
エラーを回避するには、次のようにします.
def func( ,*args, ,**kwargs):pass
例1:
def func(x, y, *args, z=10, **kwargs):
print(x,y,args, z, kwargs)
func(1,2,4,5,19, z = 20)
func(1,2,4,5,19, z = 20,t=10)
結果:
1 2 (4, 5, 19) 20 {}
1 2 (4, 5, 19) 20 {'t': 10}
例2:
def func(x, y, z=10, *args, **kwargs):
print(x,y,args, z, kwargs)
func(1,2,4,5,19)
#z , :z=4, z=20 ,
func(1,2,4,5,19, z = 20,t=10)
結果:
1 2 (5, 19) 4 {}
TypeError: func() got multiple values for argument 'z'
まとめ: