python — sympy codegen: форсировать единую подпись

Я создаю ряд параметрических функций sympy, зависящих от переменных x, y. Некоторые функции оказываются зависимыми только от некоторых переменных. поэтому, когда я называю ‘codegen’, интерфейс созданных функций меняется (иногда он включает в себя все переменные, иногда нет). Тем не менее, я хочу иметь возможность вызывать функции в единообразный манера в с.

Короче говоря, вот пример:

x,y = sympy.symbols("x,y")
S1 = x + y
S2 = x
d = {'S1':S1,'S2':S2}
for k in d.keys():
[(c_name, c_code), (h_name, c_header)] = codegen((k, d[k]),  ...\
"C",func_name,header=False, empty=False)
print(c_code)

какие выводы:

#include "S2.h"#include <math.h>
double S2(double x) {
double S2_result;
S2_result = x;
return S2_result;
}

#include "S1.h"#include <math.h>
double S1(double x, double y) {
double S1_result;
S1_result = x + y;
return S1_result;
}

Мой вопрос: как мне заставить codegen создать обе функции с одинаковой сигнатурой?

0

Решение

Я думаю, что вы ищете argument_sequence аргумент codegen(), Это позволяет вам указать фиксированный порядок, а также будет принимать избыточные аргументы.

Это задокументировано Вот.

1

Другие решения