解析从python到c++的参数

parsing arguments from python to c++

本文关键字:c++ 参数 python      更新时间:2023-10-16

我想知道如何从python更改c++/C程序中的参数值。在下面的程序中,我使用牛顿-拉夫森方法来计算函数的根。我想要的是将变量xn的值(用于初始猜测)更改为某个值在python接口中给定的值。这个代码很简单,但我正在尝试一个更大的代码在哪里我需要改变一些变量的值,我不想编译的代码每次我改变这些变量的值。

我可以写一个输入文件以避免再次编译代码,但我想要的是
控制代码更多,例如,在某个时间步停止程序和更改变量的值,然后继续执行。你能告诉我有什么直接的方法吗?

致意。

#include <iostream>                                                                                                               
using namespace std;                                                                                                                
double first_derivative(double x)
{
    double dummy;
// Parabolic Function
    dummy = 2.0 * x + 7.0;
    return (dummy);
}
double second_derivative(double x)
{
    double dummy;
//Parabolic Function
    dummy = 2.0 ;
    return(dummy);
}

int main ()                                                                                                                         
{                                                                                                                                   
    double xn,fd,sd;
    int i,n;                                                                                                                        
        i=0;    
        xn=4.0 ; 
    cout << i << "    " << xn << "n" ;
    for(i=0; i<10 ; i++) {
        fd =  first_derivative(xn);
        sd =  second_derivative(xn);
        xn = xn - fd/sd ;
        cout << i << "    " << fd << "    " << sd << "     " << xn << "n" ;
    }
    return 0;
}

如果你想让它像Python一样工作,那么最好直接用Python写。

你不能仅仅改变编译程序的"数字"。但是,您可以做的是让程序接受参数,然后在运行时更改这些参数。您可以在c++中使用命令行参数、配置文件或请求输入来完成此操作。所有这些都比使用Python更容易。

如果由于某些原因,部分代码必须使用c++,而您确实需要Python,那么您可以将c++例程作为库公开给Python。一种流行的方法是SWIG。然后你可以做的是创建你可以从Python调用的函数,这些函数可以接受你可变的参数。您的Python脚本将简单地调用它们。

一种方法是使用Boost Python:

提振。Python,一个支持无缝互操作性的c++库在c++和Python编程语言之间。

听起来很符合你的要求。

或者,当你的c++程序不接受任何参数时。您可以更改您的main函数以接受参数。

int main(int argc, char *argv[])

argc包含参数的数量,argv是指向参数字符串的指针。您可以自己解析它,或者使用类似Boost.program_options的东西。

这个程序可以通过python子进程从python中调用。

我想这是为了测试?因为这是"在某个时间步停止程序并更改变量值并继续执行"的唯一相同原因。

如果是这样,这可能接近你要找的:http://sourceware.org/gdb/wiki/PythonGdb。当然,这只适用于使用gdb的情况。