2014-01-27 97 views
0

我粘貼了一小段與我的問題相關的代碼。 我傳遞一個dict上我的課的itemSearch方法,但我得到一個TypeError爲什麼我在Python中打開我的** kwargs時得到TypeError

def itemsearch(self,*args,**params): 
     #items = self.api.item_search('Books', Publisher="O'Reilly", Author="James Shore",Year="2014",limit=10) 
     print args 
     print params 
     itemSearch=self.api.item_search(*args,**params) 
     print [item.ASIN for items in itemSearch.Items.Item] 
     self.listASIN=[(item.Title,item.ASIN) for items in itemSearch.Items.Item] 

amazonsearch=AmazonLookup() 
params={'SearchIndex':'Electronics','Condition':'New','Keywords':'Macbook pro 13 retina','MinimumPrice':'600', 
     'MaximumPrice':'2000','Sort':'-price'} 
print params 
amazonsearch.itemsearch(**params) 

我得到TypeError: item_search() takes at least 2 arguments (1 given)

+3

你能展示完整的追溯?也'item_search()'!='itemsearch()' – mhlester

回答

2

的問題是在這條線:

itemSearch = self.api.item_search(*args, **params) 

顯然, item_search函數首先需要位置參數。位置參數從args填充但args是一個空列表您撥打的itemsearch功能只能用解壓詞典:

amazonsearch.itemsearch(**params) 

所以,你需要提供至少是第一個參數太(像你註釋掉的例子:'Books')。

+0

這一個實際上工作; 'api.item_search('Blended',Keywords ='Keanu Reaves')' – eagertoLearn

相關問題