2014-04-24 49 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函数中 - 所有内容都将被打印。如果你知道所有的论点,并希望它们有限,就不要使用它!很简单,不是吗?

相关问题