在本文中,我们将介绍 (双星/星号)和 *(星号/星号)在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 。原因是双星允许我们传递关键字参数(以及任意数量的关键字参数)。
用于说明可变数量关键字参数的 *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
用于说明可变数量关键字参数和一个额外参数的 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')
在这里,我们将 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
在这里,我们将 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)
原文链接:codingdict.net