功能我有一个函数:蟒蛇调用与kwargs
def myfunc():
kwargs = {}
a = 1
b = 2
kwargs.update(a=a, b=b)
newfunc(**kwargs)
和我newfunc
def newfunc(**kwargs):
print a
它不给的是1
什么错的价值?
功能我有一个函数:蟒蛇调用与kwargs
def myfunc():
kwargs = {}
a = 1
b = 2
kwargs.update(a=a, b=b)
newfunc(**kwargs)
和我newfunc
def newfunc(**kwargs):
print a
它不给的是1
什么错的价值?
两件事情。
首先,您的kwargs
参数myfunc
是一个空字典,所以您不会传递任何参数。如果你想的a
和b
值传递给newfunc
,您可以使用
kwargs = {'a':1, 'b':2}
newfunc(**kwargs)
或
newfunc(a=1, b=2)
在这两种情况下,你会在newfunc
的kwargs字典得到'a'
和'b'
功能。
其次,你应该在newfunc
从kwargs
字典中提取你的论点。像print kwargs.get('a')
应该就够了。
你忘了包括错误。错误应该是未定义的NameError
,a
。
有许多东西你的代码错误:
def myfunc():
kwargs = {}
a = 1
b = 2
这不会改变字典kwargs
。这只是创建了两个新的本地名称a
和b
。我猜你想拥有的是:
kwargs = {}
kwargs["a"] = 1
kwargs["b"] = 2
编辑:您的更新确实解决了这条线之上
那么问题:
def newfunc(**kwargs):
print a
会给你一个错误,因为a
应该从哪里来?
使用**kwargs
这里只是告诉Python来存储所有(先前不被吸收)参数获取存储在一个新的字典。因此,你想要什么或者是这样的:
def newfunc(a,b):
print a
或
def newfunc(**kwargs):
print kwargs["a"]
考虑看看你的代码,你似乎对如何处理字典的概念奋斗。也许你问的问题会更容易让你回答自己,如果你坐下来阅读python的教程dict
应该使用'def newfunc(a,b)'来工作。 – bereal
@bereal:你是对的,改变了。 –
你应该将yor变量添加到你的字典中,并在变量的位置处打印项目。对我来说,它看起来像你的代码应该写成:
def myfunc():
kwargs = {'a': 1,
'b': 2}
newfunc(**kwargs)
def newfunc(**kwargs):
print(kwargs['a'])
if(__name__ == '__main__'):
myfunc()
或您newfunc应该有你要填写您kwargs参数字典这样的:
def myfunc():
kwargs = {'a': 1,
'b': 2}
newfunc(**kwargs)
def newfunc(a, b):
print(a)
if(__name__ == '__main__'):
myfunc()
希望有所帮助。
,那是因为你没有把任何按键,在你的字典值,你应该写的是:
def newfunc(**kwargs):
print kwargs["a"]
def myfunc():
kwargs = {"a" :1, "b": 2}
newfunc(**kwargs)
你可以参照这个线程了解kwargs更好:Understanding kwargs in Python
还是错的; '打印一个'将不知道应该从哪里取出'a'。 –
我没有看到他在这里也犯了一个错误,它被纠正了! –
好得多:)谢谢! –
是什么给你呢?错误,对吧?该错误包含一个重要提示:仅仅因为您在函数签名中声明了'kwargs'不会让所有元素突然出现在您的作用域中。 –
你为什么期望'a = 1'对'kwargs'有任何影响? – user2357112
'kwargs'收到一本字典。 – Sam