C++呼叫返回多個值的Python函式
某些時候,用python模組來實現一些特定的功能會比用其他型別的模組更加簡潔方便。
在C++程式中,呼叫python模組時需要載入一些必要的libs,這些libs在網上都可以找到。下面的程式碼演示了C++程式如何呼叫python中的函式,並得到從python函式中返回的多個值。
- # filename : cal.py
- # return type : tuple
- def mix(a, b) :
- r1 = a + b
- r2 = a - b
- return (r1, r2) # (7,3)
C++程式碼
- #include "stdafx.h"
- #include ".\\include\\Python.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- string filename = "cal"; // cal.py
- string methodname_mix = "mix"; // function name
- Py_Initialize();
- // load the module
- PyObject * pyFileName = PyString_FromString(filename.c_str());
- PyObject * pyMod = PyImport_Import(pyFileName);
- // load the function
- PyObject * pyFunc_mix = PyObject_GetAttrString(pyMod, methodname_mix.c_str());
- // test the function is callable
- if (pyFunc_mix && PyCallable_Check(pyFunc_mix))
- {
- PyObject * pyParams = PyTuple_New(2);
- PyTuple_SetItem(pyParams, 0, Py_BuildValue("i"
- PyTuple_SetItem(pyParams, 1, Py_BuildValue("i", 2));
- // ok, call the function
- int r1 = 0, r2 = 0;
- PyObject * pyValue = PyObject_CallObject(pyFunc_mix, pyParams);
- PyArg_ParseTuple(pyValue, "i|i", &r1, &r2);
- if (pyValue)
- {
- printf("%d,%d\n", r1, r2); //output is 7,3
- }
- }
- Py_Finalize();
- return 0;
- }
相關推薦
C++呼叫返回多個值的Python函式
某些時候,用python模組來實現一些特定的功能會比用其他型別的模組更加簡潔方便。 在C++程式中,呼叫python模組時需要載入一些必要的libs,這些libs在網上都可以找到。下面的程式碼演示了C++程式如何呼叫python中的函式,並得到從python函式中返回的多
c# 方法返回多個值用out
該方法返回 a+10 和 a-10 的結果,返回兩個值: public static void GetValue( int a , out int b , out
python基礎之函式返回多個值的方法
例: >>> def test(): a=11 b=22 c=33 return a #多個return,語法不會報錯,但是隻執行第一個return return b #不會執行此條語句 return c #不會執行此條語句 >>> num
C語言如何讓一個函式返回多個值
轉載:https://jingyan.baidu.com/article/d169e1860d278d436711d854.html 一、實現方法 1.用指標和陣列(陣列名本質上是一個指標); 2.或是你根本就不要返回,設定一個巨集觀變數(全域性變數),主函式和子函式都使用,就不用返回了
python 函式返回多個值
(廖雪峰Python教程學習筆記) 函式體內部的語句在執行時,一旦執行到return,函式就執行完畢,並將結果返回。 如果沒有return語句,函式執行完畢後也會返回結果,只是結果為None。 return None可以簡寫為return。 Python
python函式返回多個值
返回多個值 函式可以返回多個值嗎?答案是肯定的。 比如在遊戲中經常需要從一個點移動到另一個點,給出座標、位移和角度,就可以計算出新的新的座標: import math def move(x, y, step, angle=0): nx = x + step * m
從C++函式返回多個值
今天在回顧std::initializer_list時候,想到C++中一個函式返回多個值的方法都有哪些? 搜尋到了這麼一篇譯文,寫的還是挺全面的。 它的原文地址在這裡: 作為深度閱讀可以看
Python 返回多個值+Lambda的使用
最大值 imp from return post 一個 lambda turn mat def MaxMin(a,b): if(a>b): return a,b else: return b,a max,min=Ma
Python返回多個值
() class turn urn pytho emp bsp nbsp code 1 def get_abc(): 2 a = 1 3 b = 2 4 c = 3 5 return a,b,c 6 7 temp = get_abc()
用結構體指標做函式形參實現返回多個值(fishing_6)
最近在學ST32驅動數字攝像頭OV2640的實驗,無意中遇到了函式返回多個值的情況,決定Mark一下,說不定以後就會用到,因為一般函式都是隻有一個返回值的嘛,具體如下: 首先在標頭檔案定義結構體: typed
Javascript函式返回多個值
Javascript函式返回多個值左直拳我從來就沒有真正掌握過Javascript,又或許是Javascript不斷地在發展,有好多東西看起來常常令我覺得十分驚奇。比如說,在網上看到一條Javascript語句:Return [a,b,c,d];這是返回語句,可是它有對方括號,
函式變相做到返回多個值的方法
2方法1:利用全域性變數 分析:全域性變數作為C語言的一個知識點,雖然我們都瞭解它的特點,但在實際教學過程中應用得並不是很多。由於全域性變數的作用域是從定義變數開始直到程式結束,而對於編寫有多個返回值的C語言函式,我們可以考慮把要返回的多個值定義成全域性變
自定義函式 返回多個值(指標)
#include "iostream.h"void calcu(int *a,int *b,int *l,int *angle){//進行相應的操作//比如...*l += *a;*angle += *
函式返回多個值,傳入引數和傳出引數
函式包括了除函式名以外還有返回值和形參。 這個形參包括了傳入引數和傳出引數; 傳入引數:就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。 例如 void e
lua函數返回多個值
less logs msg exec eat 函數返回 sta cpp then function CompareString(in_source, in_compare) local ret_value; local ret_msg; if (in_sourc
4.2 使用元組-返回多個值
parse_int(List) -> parse_int(skip_to_int(List), 0). parse_int([H|T], N) when H >= $0, H =< $9 -> parse_int(T, 10 * N + H - $0);
java如何從方法返回多個值
import java.util.HashMap; import java.util.Map; public class Test { /** * 方法1:使用集合類 (Map以外的集合類也可以隨意使用) * 目標:返回一個數組的最大值和最小值 */ pu
redis列表型別list如何一次返回多個值並刪除這些值
redis的列表型別list是一個常用的資料型別,但是這個型別並不支援一次性返回多個值並刪除這些已經返回的值。 其實我們可以通過redis的事務,來完成這個一次性返回多個值並刪除這些已經返回的值的需求。 redis中的事務就是一組命令的集合,這些命令要麼全部執行,要麼全都
mysql儲存過程之返回多個值
mysql儲存函式只返回一個值。要開發返回多個值的儲存過程,需要使用帶有INOUT或OUT引數的儲存過程。咱們先來看一個orders表它的結構:mysql> desc orders; +----------------+-------------+------+----
MYSQL建立一個 “將一個字串以某個分隔符分隔得到多個值” 的函式,併為多個值加上序號
1:首先建立一個自定義函式實現分隔的功能:思路: (1、獲取分隔符在源字串中第一次出現的位置,把獲取的位置之前的子字串賦值給表的一列 (2、把第一步獲取的位置之後的子字串賦值為新的源字串 (3、再獲取分隔符在第二步得到的新的源字串中的位置,並把獲取的位置之前的子字串賦值給表