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

在Python中,如果使用*args,我必须限制arg的数量吗?,python,python-2.7,urllib2,args,Python,Python 2.7,Urllib2,Args,我有一个方法,我想通过*args给出参数。我想这样做是为了保持方法的准确性,因为它将根据传递的参数用于不同的事情 我想做的是有一个方法向Web服务发送请求。 第一个参数是应该请求的调用,*args应该包含该调用的参数。因为不同的调用有不同数量的参数,所以我想检查每个调用的参数passen的数量会有点麻烦 如果我使用*args,如果我不检查传递的参数的数量是否有问题? 这被认为是不好的风格吗 例如: call_urls = {'getX': '?requestType=getX&argum

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

我想做的是有一个方法向Web服务发送请求。 第一个参数是应该请求的调用,*args应该包含该调用的参数。因为不同的调用有不同数量的参数,所以我想检查每个调用的参数passen的数量会有点麻烦

如果我使用*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)

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

如果不使用某些参数,唯一的副作用是会浪费一些字节。好我不认为这有什么问题


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

处理参数的方式是错误的。您必须转义参数。更好地使用http请求的请求包,并通过字典传输GET参数。