在本文中,我们将介绍 (双星/星号)和 *(星号/星号)在Python中对参数的作用,在这里,我们还将介绍Python 中的 args 和 kwargs 示例。**我们可以使用特殊符号将可变数量的参数传递给函数。
有两个特殊符号:
Python 中的 *args 和 **kwargs
Python 中用于传递参数的特殊符号:
注意: “当我们对应该在函数中传递的参数数量有疑问时,我们使用像这样的“通配符”或“”符号 - args 或 **kwargs - 作为函数的参数。”
Python 函数定义中的特殊语法*args用于将可变数量的参数传递给函数。它用于传递非关键字、可变长度参数列表。
示例1:
用于说明可变数量参数的 *args 的 Python 程序
def myFun(*argv):
for arg in argv:
print(arg)
myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
输出:
Hello
Welcome
to
GeeksforGeeks
示例2:
用第一个额外参数来说明 *args 的 Python 程序
def myFun(arg1, *argv):
print("First argument :", arg1)
for arg in argv:
print("Next argument through *argv :", arg)
myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
输出:
First argument : Hello
Next argument through *argv : Welcome
Next argument through *argv : to
Next argument through *argv : GeeksforGeeks
Python 中函数定义中的特殊语法**kwargs用于传递带关键字的可变长度参数列表。我们使用带有双星的名称kwargs 。原因是双星允许我们传递关键字参数(以及任意数量的关键字参数)。
示例1:
用于说明可变数量关键字参数的 *kwargs 的 Python 程序。这里 **kwargs 接受函数调用传递的关键字可变长度参数。对于first='Geeks',first 是键,'Geeks' 是一个值。简单来说,我们分配什么是价值,分配给谁才是关键。
def myFun(**kwargs):
for key, value in kwargs.items():
print("%s == %s" % (key, value))
# Driver code
myFun(first='Geeks', mid='for', last='Geeks')
输出:
first == Geeks
mid == for
last == Geeks
示例2:
用于说明可变数量关键字参数和一个额外参数的 kwargs 的 Python 程序。都是一样的,但一个变化是我们传递了位置参数(myFun 中的 arg1)可接受的非关键字参数。我们传递的关键字参数可以被 kwargs 接受。简单吧?
def myFun(arg1, **kwargs):
for key, value in kwargs.items():
print("%s == %s" % (key, value))
# Driver code
myFun("Hi", first='Geeks', mid='for', last='Geeks')
输出:
first == Geeks
mid == for
last == Geeks
示例1:
在这里,我们将 args 和 **kwargs 作为 myFun 函数中的参数传递。将 args 传递给 myFun 只是意味着我们传递 args 包含的位置参数和可变长度参数。因此,“Geeks”传递给 arg1,“for”传递给 arg2,“Geeks”传递给 arg3。当我们将 **kwargs 作为参数传递给 myFun 时,这意味着它接受关键字参数。这里,“arg1”是键,值是“Geeks”,它被传递给arg1,就像“for”和“Geeks”分别传递给arg2和arg3一样。传递所有数据后,我们将按行打印所有数据。
def myFun(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
# Now we can use *args or **kwargs to
# pass arguments to this function :
args = ("Geeks", "for", "Geeks")
myFun(*args)
kwargs = {"arg1": "Geeks", "arg2": "for", "arg3": "Geeks"}
myFun(**kwargs)
输出:
arg1: Geeks
arg2: for
arg3: Geeks
arg1: Geeks
arg2: for
arg3: Geeks
示例2:
在这里,我们将 args 和 kwargs 作为 myFun 函数中的参数传递。其中'geeks'、'for'、'geeks'**作为 args 传递,first=”Geeks”、mid=”for”、last=”Geeks” 作为 kwargs 传递并在同一行中打印。**
def myFun(*args, **kwargs):
print("args: ", args)
print("kwargs: ", kwargs)
# Now we can use both *args ,**kwargs
# to pass arguments to this function :
myFun('geeks', 'for', 'geeks', first="Geeks", mid="for", last="Geeks")
输出:
args: ('geeks', 'for', 'geeks')
kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}
示例 1:使用 Python *args
# defining car class
class car():
# args receives unlimited no. of arguments as an array
def __init__(self, *args):
# access args index like array does
self.speed = args[0]
self.color = args[1]
# creating objects of car class
audi = car(200, 'red')
bmw = car(250, 'black')
mb = car(190, 'white')
# printing the color and speed of the cars
print(audi.color)
print(bmw.speed)
输出:
red
250
示例 2:使用 Python \kwargs**
# defining car class
class car():
# args receives unlimited no. of arguments as an array
def __init__(self, **kwargs):
# access args index like array does
self.speed = kwargs['s']
self.color = kwargs['c']
# creating objects of car class
audi = car(s=200, c='red')
bmw = car(s=250, c='black')
mb = car(s=190, c='white')
# printing the color and speed of cars
print(audi.color)
print(bmw.speed)
输出:
red
250
原文链接:codingdict.net