2014-04-24 5 views
1

나는 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) 

당신은 내가 쉽게이 호출을 사용하지 않을 경우에도 다른 인수를 전달할 수 있습니다 볼 수 있듯이.

+2

인수를 처리하는 방식이 잘못되었습니다. 매개 변수를 urlescape해야합니다. http-requests에 대한 요청 패키지를 사용하고 사전으로 GET 매개 변수를 전송하십시오. – Daniel

+0

좋은 지적. 고마워 – pypat

답변

0

일부 인수를 사용하지 않으면 부작용은 일부 바이트가 낭비된다는 것입니다. 음 .. 나는 이것에 문제가 보이지 않는다.

인수 언 패킹 트릭은 여러 개의 인수를 수신 할 수 있도록하기위한 것입니다. 논리적으로 전달 된 인수는 동일한 방법으로 처리됩니다 (예 : print 함수). 모든 것이 인쇄됩니다. 모든 주장을 알고 제한적으로 원한다면 그냥 사용하지 마십시오! 아주 간단하지, 안 그래?

관련 문제