需要一个例子来更好地理解python中的kwargs吗
我继续查看了其他线程中的一些示例。我觉得我仍然误解了口译员是如何准确地处理**夸尔格的。我已经了解了*args的基本知识,我对**kwargs的工作原理非常有信心。我只是想确定它是具体的 所以在我这里的代码示例中,我需要理解为什么我们使用**kwargs而不仅仅是使用kwargs?如果我理解正确的话,“*”或“通配符”允许我们有一个占位符,可以用任何字符串或指定值替换(我假设有一些限制)。这让我很困惑,因为在学习基础知识的同时,我已经创建了我的示例,但它并不需要这种**kwarg位置参数,或者至少我所理解的那样。我不想继续摆弄它,直到我更了解它,只是当我这么做的时候,它似乎变得更加混乱,所以我通常回去读更多。我知道,通配符被假定为处理数量不确定的参数,这样你就可以通过一个函数发送未知大小的列表和字典,这个函数可以被调用,不管你放了多少个参数 所以我想,我的问题是。这是**kwargs的正确用法吗。有没有人有更好的方法来解释和理解它的语法和实现。感谢你们让这个地方继续发展,并提供了一个很棒的社区。我将继续阅读,同时等待一些回应需要一个例子来更好地理解python中的kwargs吗,python,Python,我继续查看了其他线程中的一些示例。我觉得我仍然误解了口译员是如何准确地处理**夸尔格的。我已经了解了*args的基本知识,我对**kwargs的工作原理非常有信心。我只是想确定它是具体的 所以在我这里的代码示例中,我需要理解为什么我们使用**kwargs而不仅仅是使用kwargs?如果我理解正确的话,“*”或“通配符”允许我们有一个占位符,可以用任何字符串或指定值替换(我假设有一些限制)。这让我很困惑,因为在学习基础知识的同时,我已经创建了我的示例,但它并不需要这种**kwarg位置参数,或者至
kwargs = {"kwarg1": 1, "kwarg2": 2, "kwarg3": 3}
def some_func(*args, **kwargs):
print("*Args:", *args)
some_func("AnArg1", "AnArg2", "AnArg3", kwargs)
我一直在摆弄更多的东西,这些就是我提出并阅读的例子
def greet_me(**kwargs):
for key, value in kwargs.items():
print("{0} = {1}".format(key, value))
def test_args_kwargs(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
args = ("two", 3, 5)
test_args_kwargs(*args)
kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test_args_kwargs(**kwargs)
kwargs = {"kwarg1": 1, "kwarg2": 2, "kwarg3": 3}
def some_func(*args, **kwargs):
print("*Args:", *args)
some_func("AnArg1", "AnArg2", "AnArg3", kwargs)
输出:
arg1:两个
arg2:3
arg3:5
arg1:5
arg2:两个
arg3:3
*Args:AnArg1 AnArg2 AnArg3{'kwarg1':1,'kwarg2':2,'kwarg3':3}
其中输出输出最后一串args和kwargs。我想把它们分成两行。我还想确保我正确使用**kwargs。如果有关于做什么和不做什么的建议,我一定会接受
输出
arg1:两个
arg2:3
arg3:5
arg1:5
arg2:两个
arg3:3
*Args:AnArg1 AnArg2 AnArg3
**KWArgsg:{'kwarg1':1'kwarg2':2'kwarg3':3}
输出:
('this','is'){'a':'a','test':'test'}
('this','is'){'a':'a','test':'test'}
所以args是元组,kvargs是字典
*(1、2、3)从元组中提取值,并将其作为单独的项而不是集合提供。这叫做“拆包”。虽然返回的内容不太明显,但您也可以打开词典
您不必了解kvargs如何使用它。即使kvargs是一本词典,也不应该将其视为一本词典。要从*args和**kvargs中提取值,请为函数指定参数:
def leftovers(*args, **kvargs):
print(args, kvargs)
def filter(a, *args, b='thing', **kvargs):
leftovers(*args, **kvargs)
filter(1, 2, b=3, c=4)
输出:
(2,){'c':4}
函数“filter”使用第一个position参数和“b”关键字参数。剩下的参数可以传递给“leftovers”函数。这比:
def leftovers(*args, **kvargs):
print(args, kvargs)
def filter(*args, **kvargs):
a = args[0]
b = kvargs['b']
del kvargs['b']
leftovers(args[1:], **kvargs)
filter(1, 2, b=3, c=4)
def leftovers(*args, **kvargs):
print(args, kvargs)
def filter(*args, **kvargs):
a = args[0]
b = kvargs['b']
del kvargs['b']
leftovers(args[1:], **kvargs)
filter(1, 2, b=3, c=4)