0

나는 내기 상점에서 사용되는 매우 기본적인 매치 마켓 솔루션을 만들고 있습니다. 나는이처럼 보이는 기능이 있습니다파이썬에서 선택적 인수를 건너 뛰고 * args를 직접 호출하는 방법

def create_market(name, match, providerID=str(uuid.uuid4()), market_kind=4, *market_parameters): 

내가 (이 선택 사항이기 때문에)을 providerIDmarket_kind를 건너 뛰는 동안

명심에만 name, matchmarket_parameters으로 함수를 호출 할을 그 *market_parameters은 함수 내에서 전송 될 dicts의 튜플이됩니다. 내가

market_parameters = {'nWays' : 5} 

등이 딕셔너리를 설정하고 난 함수 본체 내부의 데이터를 얻을 수없는 것 create_market('Standard', 1, *market_parameters)

같은 함수를 호출

for idx, data in enumerate(args): 
    for k, v in data.iteritems(): 
     if 'nWays' in k: 
      set_value = v 

: 나는처럼 압축을 풉니 다.

내가 뭘 잘못하고 있니? (당신이 더 많은 값이있는 경우 providerID, market_kind 등으로 다음 사전에서)이 같은 *market_parameters, 당신은 providerID로 압축을 푼 값을 보내 풀고으로

+1

* ''* market_parameters'는 것이다 위치 매개 변수를위한 dict "* - tuple; '** kwargs'는 사전이 될 것입니다. – jonrsharpe

+0

@jonrsharpe 예, 맞습니다 :) 나는 * market_parameters가리스트 (튜플)로 함수에 전달되는 알 수없는 수의 dicts가 될 것이라고 쓰려고했습니다. – mutantkeyboard

답변

1

.

당신은 아마

def create_market(name, match, *market_parameters, 
        providerID=str(uuid.uuid4()), market_kind=4): 

필요하고 같은 함수를 호출 :

create_market('Standard', 1, market_parameters) # you don't need to unpack it. 

하고 다음 providerID 또는 market_kind을 설정하려면 :

create_market('Standard', 1, market_parameters, providerID=your_provider_id, market_kind=your_market_kind) 
+0

예. 그게 전부 야. @ Yevhen Kuzmovych 감사합니다. 너는 생명의 은인이야. – mutantkeyboard

+0

@mutantkeyboard 무엇을하려고하는지 잘 모르겠지만 [kwargs] (http://stackoverflow.com/questions/1769403/understanding-kwargs-in-python)가 유용 할 수 있습니다. –

관련 문제