在Python中,如果使用* args,我是否必须限制args的数量?

时间:2014-04-24 11:37:08

标签: python python-2.7 urllib2 args

我有一个方法,我想通过* args提供参数。我想这样做是为了保持方法的可用性,因为它将根据传递的参数用于不同的事情。

我想要做的是有一个方法将请求发送到Web服务。 第一个参数是应该请求的调用,* args应该包含该调用的参数。由于不同的调用具有不同数量的参数,因此检查每个调用的参数的数量将是一种麻烦我猜。

如果我使用* args,如果我不检查传递的参数数量,这是一个问题吗? 它被认为是不好的风格吗?

示例:

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)

正如您所看到的,即使它不会用于呼叫,我也可以轻松传递另一个参数。

1 个答案:

答案 0 :(得分:0)

如果没有使用某些参数,唯一的副作用是会浪费一些字节。嗯..我没有看到这个问题。

参数解包技巧旨在能够接收任意数量的参数。从逻辑上讲,传递的参数将以相同的方式处理,例如,在print函数中 - 打印所有内容。如果您知道所有论点并希望它们受到限制,那就不要使用它!很简单,不是吗?