Как передать необязательные параметры из одной функции в другую функцию, которая также является параметром первой функции? - PullRequest
0 голосов
/ 02 марта 2020

Заголовок кажется сложным, но саму проблему легко описать на примере:

fun c имеет другую функцию в качестве параметра (my_func1 или my_func2), и мне нужно предоставить параметры этим две функции, но my_func1 нужны три параметра (a, b и c), а my_func2 нужны два параметра (a и b). Как я могу использовать ** kwards в примере? Большое спасибо !!

def my_func1(a,b,c):
    result = a + b + c
    return result
def my_func2(a,b):
    resultado = a*b
    return resultado
def func(function,a,**kwargs):
    z = function(a,**kwargs)
    return z
test = func(my_func1,3,3 3)
ERROR:
ile "<ipython-input-308-ada7f9588361>", line 1
    prueba = func(my_func1,3,3 3)
                               ^
SyntaxError: invalid syntax

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Похоже на несколько проблем с синтаксисом, для вашего test:

Возможно, вы имели в виду:

test = func(my_func1,3,3, 3)

Обратите внимание на отсутствующее ,; и тогда **kwargs это должно быть: *args?

def my_func1(a,b,c):
    result = a + b + c
    return result

def my_func2(a,b):
    resultado = a*b
    return resultado

def func(function,*args):
    z = function(*args)
    return z

print(func(my_func2,3,3)); # prints 9
print(func(my_func1,3,3,3)); # prints 9

0 голосов
/ 02 марта 2020

Я не уверен, чего вы здесь добиваетесь, но вы должны использовать * args вместо * kwargs, поскольку ваши параметры не названы.

Вот рабочая версия. Также обратите внимание на пропущенную запятую в забавных c аргументах вызова.

def my_func1(a,b,c):
    result = a + b + c
    return result

def my_func2(a,b):
    resultado = a*b
    return resultado

def func(function,a,*args):
    z = function(a,*args)
    return z

test = func(my_func1,3,3, 3)
print(test)
...