Как передать аргументы функции python, которая имеет вариант аргумента? - PullRequest
0 голосов
/ 06 марта 2020

я использую boost :: python для обратного вызова функции python на стороне C ++, функция python может иметь различные аргументы, это выглядит так:

foo(int) ,
foo(int ,double),
foo(string , othertype,...) , 

в моей программе C ++ i отправьте foo в качестве повышения :: python :: object,

void Call(object foo)
{
//check each argument and assign value for example
int arg1=2;
string arg2="hehe";
.....
//then send above arguments to foo , but how to send?
foo(??);
}

, и теперь я могу получить имя каждого аргумента и соответственно указать значение, но моя проблема заключается в следующем: как передать значение в foo?

я использую boost :: python :: list или tuple для сбора данных, но не работает, ошибка аргумента. кто-нибудь может мне помочь? большое спасибо.

1 Ответ

0 голосов
/ 06 марта 2020
def myFun(arg1, **kwargs):  
    for key, value in kwargs.items(): 
        print ("%s == %s" %(key, value)) 

# Driver code 
myFun("Hi", first ='Geeks', mid ='for', last='Geeks') 

вы можете использовать ** args: чтобы вы могли передавать несколько аргументов с разными типами в качестве типа dict

вы можете проверить эту ссылку для получения дополнительной информации: https://www.geeksforgeeks.org/args-kwargs-python/

...