Я хотел бы знать, возможно ли что-то подобное (Python код ниже)
def my_function(v1, v2):
return v1+v2
var1 = 1
var2 = 2
vars = "var1,var2"
print(my_function(vars))
Я знаю, что этот код не будет работать, потому что функция требует двух аргументов, но причина, по которой я хотел бы знать, что я хотел бы разработать функцию, которая может изменять длину аргумента. * args и ** kwargs не будут работать, потому что функция, которую я вызываю, уже сгенерирована. Вот фрагмент моего кода для контекста
def construct_transaction(value, chain_id, gas, gas_price, **params):
# amountIn = w3.toWei(0.1, 'ether') # << These are the variables I would like to
# amountOutMin = 1 # input into the function below
# path = [token_0_addr, token_1_addr] # "swapExactTokensForTokens"
# to_addr = my_addr
# deadline = 1690528847
for key in params.keys():
locals()[key] = params[key] # variables created from params
nonce = w3.eth.getTransactionCount(w3.toChecksumAddress(my_addr))
txn = uniswap_v2_router_contract.functions.swapExactTokensForTokens("amountIn,..,"). \
buildTransaction({
'value': 0,
'chainId': chain_id,
'gas': gas,
'gasPrice': gas_price,
'nonce': nonce,
})
количество аргументов будет меняться в зависимости от контракта и вызываемой функции. Заранее спасибо.