귀하의 질문은 약간 불완전합니다. 하지만 여러 함수 호출이 있고 모든 함수 호출이 정확히 하나의 매개 변수로 작동한다고 가정합니다. 이 경우
, 당신은 (더 쉽게 확장으로,리스트해야하는) 당신의 튜플을 압축 할 수 있습니다
n = -1
for n, (func, arg) in enumerate(zip(tuple1, tuple2)):
func(arg)
n += 1 # to get the same base as you – number of calls made
그것은 더 실용적인 것, 그러나, 이미 포함되어 하나 개의 목록을 가지고 쌍을 만들 수 호출이 경우
calls = []
…
func = lambda x : MyCpu_Usage(x)
calls += [(func, arg)]
# or just
calls += [(MyCpu_Usage, arg)]
…
n = -1
for n, (func, arg) in enumerate(calls):
func(arg)
n += 1 # to get the same base as you – number of calls made
을 calls
이라는 목록의 모든 목록 항목이 호출되는 함수와 인수와 2 소자 튜플이다. 각 루프 실행에서 항목은 첫 번째 튜플 요소가있는 0 번째 튜플 요소를 호출하여 처리됩니다.
당신이 항목의 독립적 인 확인하려면, 당신은
calls = []
…
calls += [lambda: MyCpu_Usage(arg)] # arg being the same you had before
…
n = -1
for n, call in enumerate(calls):
call()
n += 1 # to get the same base as you – number of calls made
이 arg
가,이 경우, 폐쇄 것을, 그러나주의 할 수 있습니다. 즉, 다시 지정하고 다시 사용하면 사용하는 모든 람다에 대해 변경됩니다. 이 경우 다음과 같이 할 수 있습니다 :
def new_lambda(target, *args, **kwargs):
return lambda: target(*args, **kwargs)
calls = []
…
calls += [new_lambda(MyCpu_Usage, arg)]
…
n = -1
for n, call in enumerate(calls):
call()
n += 1 # to get the same base as you – number of calls made
'tuple1'과'tuple2'의 결과는 끝납니다. 또한 - 당신은 그와 같은 튜플을 사용하는 것이 이상합니다 - 그리고 그 전체 람다 - 당신은 단지'MyCpu_Usage'를 사용할 것입니다 - 정확히 당신이하려는 것은 무엇입니까? –
@JonClements 코드와 질문을 업데이트했습니다. –
이제 여러분은'argparse' 내장 라이브러리인데, 인수를 기반으로 호출 할 적절한 함수를 설정 한 다음 나머지 구문 분석 된 인수를 해당 함수에 전달합니다. –