[英]*args and **kwargs
我有一個View
,它調用了另一個函數
class MyView(APIView):
def post(self, request, *args, **kwargs):
abc(a=1, b=2, c=3, *args, **kwargs)
我的功能
def abc(a, b, c, *args, **kwargs):
pass
我面臨的問題是當我調用abc
,它說abc() got multiple values for argument 'a'
或者有時它說abc() got multiple values for argument 'b'
。
經過一點調試后,我發現args
恰好有3個參數,因此(我想)是當*args
傳遞給函數時,它與abc
參數沖突。 我該如何糾正?
問題是什么? :
kwargs
dict包含密鑰x
作為密鑰。
打電話
abc(a=1, b=2, c=3, *args, **kwargs)
發送參數x
兩個值
其中x是"a", "b", "c"
任何"a", "b", "c"
如何調試:
嘗試打印您的kwargs
:
class MyView(APIView):
def post(self, request, *args, **kwargs):
print(kwargs)
abc(a=1, b=2, c=3, *args, **kwargs)
來調試它。 它將具有鍵"a", "b", "c"
。
我該如何解決:(一種骯臟的解決方案)
現在要解決此問題,只需從kwargs中刪除密鑰:
class MyView(APIView):
def post(self, request, *args, **kwargs):
del kwargs['a']
del kwargs['b']
del kwargs['c']
abc(a=1, b=2, c=3, *args, **kwargs)
class MyView(APIView):
def post(self, request, *args, **kwargs):
abc(a=1, b=2, c=3, args=args, kwargs=kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.