2014-04-24 66 views
1

我有一個方法,我想通過*參數給參數。我想這樣做是爲了保持方法的準確性,因爲它將根據傳遞的參數用於不同的事情。在Python中,如果使用*參數,我必須限制參數的數量嗎?

我想要做的是有一個方法發送請求到web服務。 第一個參數是應該請求的調用,* args應該包含該調用的參數。由於不同的調用有不同數量的參數,因此檢查每次調用passen參數的次數會是一種麻煩,我猜。

如果我使用*參數是否是一個問題,如果我不檢查傳遞參數的數量? 它被認爲是不好的風格?

例子:

call_urls = {'getX': '?requestType=getX&argument1={}', 
      'getY': '?requestType=getY&argument1={}&argument2{}' 

def makerequest(self, call, *args): 
    url = ''.join([self.base_url, self.call_urls[call].format(*args)]) 
    response = urllib2.urlopen(url)  
    return response  

result = api.makerequest('getX','blabla').read() 
print(result) 
result = api.makerequest('getY','blublu', 'blibli').read() 
print(result) 

正如你可以看到我能夠輕易地通過,即使它不會被用於呼叫的另一個理由。

+2

你處理參數的方式是錯誤的。你必須urlescape參數。更好地使用HTTP請求的請求包並通過字典傳輸GET參數。 – Daniel

+0

好點。謝謝 – pypat

回答

0

如果沒有使用某些參數,唯一的副作用是某些字節將被浪費。呃..我沒有看到這個問題。

參數拆包技巧旨在能夠接收任意數量的參數。從邏輯上講,傳遞的參數將以相同的方式處理,例如,在print函數中 - 所有內容都將被打印。如果你知道所有的論點,並希望它們有限,就不要使用它!很簡單,不是嗎?

相關問題