可変引数は:関数呼び出しを参照して、渡されるパラメータの数は固定されなくてもよいです
関数が呼び出され、ないつ以上のパス・モード、1の値は、引数の位置であり、他の引数は、キーワードであるため、オーバーフロー位置引数を受信するために2つの解決策が存在する仮パラメータを有していなければなりません(*)キーワード引数で(**)
ディアンの可変長パラメータ*
*パラメータは、位置、すべての引数、次いで格納されたタプルにオーバーフローする、タプルは、次に*パラメータに割り当てられています。なお:*引数のパラメータ規則の名前。
def sum_self(*args):
res = 0
for num in args:
res += num
return res
res = sum_self(1, 2, 3, 4)
print(res)
10
2ディアンの可変長引数*
引数は* * *値は、サイクルパラメータを取り出した位置の引数に分割されます。*に遭遇するたびに、引数の後、それは位置引数がすぐに引数を参照位置に分割されなければならないです。
def func(x, y, z, *args):
print(x, y, z, args)
func(1, *(1, 2), 3, 4)
1 1 2 (3, 4)
結婚と**の可変長パラメータ
スピルオーバすべてのキー引数、パラメータ**、その後、辞書に格納され、次にパラメータに割り当てられた辞書**。なお:大会はkwargsからだった**パラメータ名の後に。
def func(**kwargw):
print(kwargw)
func(a=5)
{'a': 5}
可変長のディアン4つの引数は
引数があり、それはなり、抽出サイクル後のパラメータの値はキーワード引数を破ります。遭遇した時はいつでも後は、すぐに見にキーワード引数に分割すべきである**と引数の重要な引数です。
def func(x, y, z, **kwargs):
print(x, y, z, kwargs)
func(1, 3, 4, **{'a': 1, 'b': 2})
1 3 4 {'a': 1, 'b': 2}
ディアン5可変長パラメータが適用されます
def index(name, age, sex):
print(f"name: {name}, age: {age}, sex: {sex}")
def wrapper(*args, **kwargs):
print(f"args: {args}")
print(f"kwargs: {kwargs}")
index(*args, **kwargs)
wrapper(name='nash', sex='male', age=18)
args: () kwargs: {'name': 'nash', 'sex': 'male', 'age': 18} name: nash, age: 18, sex: male
ディアンは、6つの主要パラメータの名前
需要が用意されました:ユーザー関数の引数はキーワードで渡す必要があります。
def register(x, y, **kwargs):
if 'name' not in kwargs or 'age' not in kwargs:
print('用户名和年龄必须使用关键字的形式传值')
return
print(kwargs['name'])
print(kwargs['age'])
register(1, 2, name='nash', age=18)
nick 19
パラメータは、* keyパラメータにちなんで命名され、関数定義の段階:キーワードパラメータに名前を付けます。
特徴:パス値ではキー=値方式とキーの値に応じて渡す必要がありますが、パラメータ名を指定したキーワード引数を名前を付ける必要があります。
def register(x, y, *, name, gender='male', age):
print(x)
print(age)
register(1, 2, x='nash', age=18) # TypeError: register() got multiple values for argument 'x'