あなたの質問は少し不完全です。しかし、私はあなたがいくつかの関数呼び出しを持っていると仮定し、すべての関数呼び出しはちょうど1つのパラメータで動作します。この場合
、あなたが(彼らはより簡単に拡張するよう、リストであるべきである)あなたのタプルを圧縮することができます
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要素のタプルです。各ループ実行では、1番目のタプル要素で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'組み込みライブラリがあり、引数に基づいて呼び出す適切な関数を設定し、残りの解析された引数をその関数に渡します... –