這是示例:
def testB(argA, argB):
#USER CODE
def testA(argA, argB, argC):
#USER CODE
def funcExecuter(func, nbArgs, *argv):
#TODO
funcExecuter(testA, 3, 1, 2, 3)
funcExecuter(testB, 2, 1, 2)
我想實作一個函式(此處為 funcExecuter),該函式使用 argv 中的引數執行函式 func。這些函式得到了未定義數量的引數。但我不能打電話
func(*argv)
導致實際函式testA,需要三個引數而不是一個。所以我需要使用 argv list 來呼叫函式 func 及其所有引數。
這可能嗎 ?此致。
uj5u.com熱心網友回復:
看起來你所做的是正確的方法。
例子:
def testB(argA, argB):
print(f'{argA=}')
print(f'{argB=}')
def testA(argA, argB, argC):
print(f'{argA=}')
print(f'{argB=}')
print(f'{argC=}')
def funcExecuter(func, nbArgs, *argv):
return func(*argv)
print('test1')
funcExecuter(testA, 3, 'a', 'b', 'c')
print('test2')
funcExecuter(testB, 2, 'a', 'b')
輸出:
test1
argA='a'
argB='b'
argC='c'
test2
argA='a'
argB='b'
確保引數數量正確
如果要截斷或填充引數:
def testA(argA, argB, argC):
print(f'{argA=}')
print(f'{argB=}')
print(f'{argC=}')
def funcExecuter(func, nbArgs, *argv):
return func(*(list(argv[:nbArgs]) [None]*(nbArgs-len(argv))))
print('test1')
funcExecuter(testA, 3, 'a', 'b', 'c')
print('test2')
funcExecuter(testA, 3, 'a', 'b', 'c', 'd')
print('test3')
funcExecuter(testA, 3, 'a', 'b')
輸出:
test1
argA='a'
argB='b'
argC='c'
test2
argA='a'
argB='b'
argC='c'
test3
argA='a'
argB='b'
argC=None
注意。這是一個簡單的例子,當然你可以有一個更復雜的檢查
uj5u.com熱心網友回復:
func(*argv)如果它們傳遞的引數少于 3 個,為什么不使用并拋出例外?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363890.html
