c++程序轉python的注意事項

經常涉及將C++程序轉換成python程序,其中有些不同,在調試中避免犯錯,記錄下來共享給大家。

1 除法

在c++中,首先要定義類型,比如整形,做完除法后還保持原來類型。在python中由于類型是動態確定,在除法時需要區別是整除還是一般除法。另一種解決方案就是提前確定python變量類型。

int a, b, c;
a = 7;
b = 2;
c = a/b;

對應python程序如下

import numpy as np

a = 7
b = 2
c = a//b

2 for 循環

c++和python的for循環區別在于循環的最后一次判斷,c++的最后一次變量增加和判斷都進行,而python則沒有,因此需要特別注意在for循環中的一些操作。

int i, j,c;
for(i=0,j=0;i < 4;i++,j++);
print("%d %d",i,j);

要實現最后一次判斷需要使用python for else結構

j = 0
for i in range(4):
        j += 1
else:
        i += 1
j = 0
for i in range(4):
        if i == 2:
                j += 1
                continue
        j += 1
else:
        i += 1

3 與

在c中與表達式和python有些不同, 3 && 2 在c++中表示true,這是一個邏輯表達式, 在python中 3 and 2 表示2,這是一個算術式。
c++中指針作為一個整形值來處理,可以進行判斷。python類的引用作為對象來處理,不能使用not進行判斷。

4 指針與numpy

在c++中經常使用指針,針對某個固定的地址進行操作,而python一切皆對象,特別如切片等操作都是新生成一個對象,這與c++中進行指針的移動,操作同一對象不符。使用numpy生成空間,在進行對象引用傳遞的時候,可以保持操作同一片地址空間,這與指針操作有異曲同工之妙。

5 c的初始化

使用c寫的python庫的時候有個隱含bug,我們知道C語言的變量使用前有清零的動作,這個行為在python中也需要,否則就會出現debug和release的值不相同的詭異現象。筆者使用bitarray的時候就出現過不初始化就有bug

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 個人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,768評論 0 5
  • Python語言特性 1 Python的函數參數傳遞 看兩個如下例子,分析運行結果: 代碼一: a = 1 def...
    伊森H閱讀 3,083評論 0 15
  • 敏捷開發指的是在一個高度協作的環境中,不斷地使用反饋進行自我調整和完善。 一般誤認為,敏捷就是快,越快就是越敏捷,...
    panxiubin閱讀 750評論 0 12
  • 去年換了工作單位以后,恰好趕上忙的時候,一忙就是一年。隨著工作生活壓力增大,常常借酒舒壓,喝多了就常微信騷擾朋友,...
    會當凌絕頂cz閱讀 259評論 0 0
  • 有人喜歡這個功利的世界 它是本該有的的世界么 世界不是最淳樸的樣子嗎 不是將原野和最舒適的生活和諧的結合么 我開始...
    墨馡閱讀 248評論 0 1