나는 args를 통해 인자를주고 싶다. 전달 된 인수에 따라 다른 것들에 사용될 것이므로 메서드를 비 휘발성으로 유지하려면이 작업을 수행하고 싶습니다.Python에서 * args를 사용하는 경우 args 수를 제한해야합니까?
내가 원하는 것은 웹 서비스에 요청을 보내는 한 가지 방법입니다. 첫 번째 인수는 요청되어야하는 호출이고 * 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)
당신은 내가 쉽게이 호출을 사용하지 않을 경우에도 다른 인수를 전달할 수 있습니다 볼 수 있듯이.
인수를 처리하는 방식이 잘못되었습니다. 매개 변수를 urlescape해야합니다. http-requests에 대한 요청 패키지를 사용하고 사전으로 GET 매개 변수를 전송하십시오. – Daniel
좋은 지적. 고마워 – pypat