В Python, как я могу вызвать функцию, используя значение аргумента по умолчанию?Я знаю, что это можно сделать, просто не передавая параметр при вызове функции, но я бы предпочел передать переменную через функцию.Имея эти две функции:
def A(argA1=defValA1, argA2=defValA2, argA3=defValA3):
argB1val=K*argA1
argB2val=K*argA2
argB3val=K*argA3
B(argB1=argB1val, argB2=argB2val,argB3=argB3val)
def B(argB1=defValB1, argB2=defValB2, argB3=defValB3):
print("First argument: "+argB1)
print("Second argument: "+argB2)
print("Third argument: "+argB3)
Если я вызову A () со всеми аргументами, проблем не будет:
Main:
A(argA1val, argA2val, argA3val)
Но что если явызвать A () с некоторыми отсутствующими аргументами ?:
Main:
A(argA1val)
В этом случае внутри A () будет вызываться функция
B ()значения по умолчанию для последних двух:
B(argB1= K*argA1, argB2= K* defValA2, argB3= K* defValA3)
Однако я хотел бы вызвать B (), используя значения по умолчанию для последних двух аргументов, например:
B(argB1= K*argA1, argB2=defValB2, argB3=defValB3)
Итак, я хотел бы, чтобы A () было что-то вроде:
def A (argA1 = defValA1, argA2 = defValA2, argA3 = defValA3):
if (argA1==defValA1):
argB1val=B.getDefaultValue("argB1")
else:
argB1val=K*argA1
if (argA2==defValA2):
argB2val=B.getDefaultValue("argB2")
else:
argB2val=K*argA2
if (argA3==defValA3):
argB3val=B.getDefaultValue("argB3")
else:
argB3val=K*argA3
B(argB1=argB1val,argB2=argB2val,argB3=argB3val)
В противном случае мне потребуетсясделать что-то вроде:
def A (argA1 = defValA1, argA2 = defValA2, argA3 = defValA3):
if (argA1==defValA1 && argA2!=defValA2 && argA3!=defValA3):
argB2val=K*argA2
argB3val=K*argA3
B(argB1= defValB1, argB2=argB2val,argB3=argB3val)
if (argA1!=defValA1 && argA2==defValA2 && argA3!=defValA3):
argB1val=K*argA1
argB3val=K*argA3
B(argB1=argB1val, argB2= defValB2,argB3=argB3val)
if (argA1!=defValA1 && argA2!=defValA2 && argA3==defValA3):
argB1val=K*argA1
argB2val=K*argA2
B(argB1= argB1val, argB2=argB2val,argB3= defValB1)
if (argA1==defValA1 && argA2==defValA2 && argA3!=defValA3):
argB3val=K*argA3
B(argB1= defValA1, argB2= defValA2,argB3=argB3val)
….
….
….
Etc…
Имея еще больше комбинаций, если у нас есть больше параметров.
Кто-нибудь знает, есть ли способ получить значение по умолчанию для параметра, передаваемого в функцию?
Спасибо!