A. python能做嵌入式嗎
近些年來Python非常流行,Python是一種面向對象的解釋型計算機程序設計語言,Python語法簡潔清晰,易讀性以及可擴展性,Python具有豐富和強大的庫,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起,常被稱為膠水語言,可以應用在圖形處理,數學處理,Web編程,多媒體應用等領域。定位(推薦學習:Python視頻教程)
在過去的這么長時間里,在嵌入式開發領域中開發語言以C/C++為主,如今基於Python的MicroPython已經涉入到該領域中,MicroPython是一位叫Damien George的工程師,基於ANSI C(c語言標准),然後在語法上又遵循了Python的規范,主要是為了能在嵌入式硬體上(這里特指微控制器級別)更易於的實現對底層的操作,MicroPython官方提供的硬體開發板叫PyBoard,除了官方提供的開發板外,還有一些嵌入式硬體也被成功移植了MicroPython,例如:Esp8266,WiPy,Espruino Pico,STM32F4 Discovery等。
MicroPython pyboard是一個緊湊的電子電路板,在裸機上運行MicroPython,為您提供一個低級Python操作系統,可用於控制各種電子項目。
MicroPython包含許多高級功能,如互動式提示,任意精度整數,閉包,列表理解,生成器,異常處理等。然而它非常緊湊,可以在256k的代碼空間和16k的RAM內運行。
MicroPython旨在盡可能與普通Python兼容,以便您輕松地將代碼從桌面傳輸到微控制器或嵌入式系統。
pyboard是官方的MicroPython微控制器板,完全支持軟體功能。硬體有:
STM32F405RG單片機
具有硬體浮點的168 MHz Cortex M4 CPU
1024KiB快閃記憶體ROM和192KiB RAM
Micro USB連接器,用於電源和串列通信
Micro SD卡插槽,支持標准和高容量SD卡
3軸加速度計(MMA7660)
帶可選備用電池的實時時鍾
左側和右側邊緣為24 GPIO,底行為5 GPIO,底部有LED和開關GPIO
3個12位模數轉換器,16引腳,4個模擬地屏蔽
2x 12位數模轉換器(DAC),可在引腳X5和X6上使用
4個LED(紅色,綠色,黃色和藍色)
1個復位和1個用戶開關
板載3.3V LDO穩壓器,能夠提供高達250mA的電壓,輸入電壓范圍為3.6V至16V
ROM中的DFU引導載入程序,可輕松升級固件
Python本來就是非常容易入門的語言,同時也是應用廣泛的語言,MicroPython將這用容易學習和使用的語言帶到了嵌入式開發中,可以直接操作硬體,並且不需要編譯和下載,可以快速的看到程序的結果,這是非常好的體驗。PyBoard精緻小巧是一塊漂亮的開發板,可以方便的學習和開發,另外MicroPython也支持更多的平台,例如:STM32F4 Discovery Board,NUCLEO-F401RE Board,NUCLEO-F767ZI Board,ESP8266,WiPy等,以上的這些開發板都可以支持MicroPython,在開發板內刷上固件就可以使用了。MicroPython帶來了全新的開發體驗,有興趣的同學可以試試。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python能做嵌入式嗎的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
B. 怎樣把Python代碼嵌入到C程序
步驟1:安裝Python開發包
由於需要訪問Python/C API,首先安裝Python開發包。
在Debian,Ubuntu或Linux Mint中:
在CentOS,Fedora或RHEL中:
安裝成功後,Python頭文件在/usr/include/python2.7。根據Linux發行版的不同,確切的路徑可能是不相同的。例如,CentOS 6中是/usr/include/python2.6。
步驟2:初始化解釋器並設置路徑
C中嵌入Python的第一步是初始化Python解釋器,這可以用以下C函數完成。
初始化解釋器後,需要設置你的C程序中要導入的Python模塊的路徑。例如,比如你的Python模塊位於/usr/local/moles。然後使用以下C函數調用來設置路徑。
步驟3:數據轉換
C中嵌入Python最重要的方面之一是數據轉換。從C中傳遞數據到Python函數,需要首先將數據從C數據類型轉換到Python數據類型。Python/C API提供各種函數來實現這。例如,轉換C字元串到Python字元串,使用PyString_FromString函數。
另外一個類似函數PyInt_FromLong,將C中long數據類型轉換為Python int。每個Python/C API函數返回一個PyObject類型的引用。
步驟4:定義一個Python模塊
當你想嵌入Python代碼到另一種語言如C,該代碼需要被寫成Python模塊,然後用另一種語言「導入」。所以讓我們來看看如何在C中導入Python模塊。
為了進行說明,我們實現一個簡單的Python模塊例子如下:
以上的Python函數有一個字元串作為參數並返回兩個重復的字元串。例如,如果輸入字元串是「cyberpersons」,該函數返回'cyberpersonscyberpersons'。此模塊文件命名為「printData.py」並將它放在前面聲明的Python模塊目錄中(/usr/local/moles)。
步驟5:載入一個Python模塊
現在你已經定義了Python模塊,是時候在C程序中載入它了。導入模塊的C代碼看起來像這樣:
步驟6:構建函數的參數
當載入一個模塊時,可以調用模塊中定義的Python函數。通常,我們需要傳遞一個或多個參數到一個Python函數。我們必須構建一個Python元組對象,它包括Python函數中的參數。
在我們的例子中,printData函數定義帶一個參數的模塊。因此,我們構建一個大小是一的Python元組對象如下。我們可以使用PyTuple_SetItem設置元組對象的每個項。
我們已經成功構建一個參數傳遞到函數調用,是時候從C程序調用python函數了。
步驟7:調用Python函數
一旦成功創建Python元組對象作為函數參數,我們可以調用一個帶參數的Python函數。為此,通過使用PyObject_GetAttrString首先獲得模塊中定義的函數的引用,然後使用PyObject_CallObject調用該函數。例如:
步驟8:錯誤檢查
避免運行時錯誤的常見方法是檢查函數的返回值並根據返回值採取適當的行動。類似於C程序中的全局變數errno,Python/C API提供一個全局指示符,它報告最後發生的錯誤。當Python/C API函數失敗,全局指示符設置為指示錯誤,並且PyErr_Print可以用於顯示相應的人類可讀的trackback。例如:
在你的應用程序中,你可以輕松地將各種錯誤檢查。
這里是完整的C程序,它如本教程描述的嵌入Python代碼。
步驟9:編譯和執行
保存以上代碼到finalCode.c,並且鏈接Python庫(-lpython2.7)編譯該代碼。根據發行版的不同,可能使用不同的版本(例如,-lpython2.6)。
C. 學了Python對C語言有影響不
Python我不是很了解。應該是一種腳本語言吧,c語言較底層的一種面向過程的編程語言。
1.本身兩者確實不一樣,不會造成沖突。用到什麼項目就用什麼語言。
2.編程語言和咱們的語言是一樣的。多學一種語言,多一種能力。比如英語和日語,是否會感到混淆?
所以只要你學的扎實,是不會出現混淆的,相反會成為一個多面手。何樂而不為。
3.學習多種編程語言沒有問題,但要學一樣就像一樣。堅持鑽研才是關鍵,這樣才能到達目的吧。
D. 怎樣把Python代碼嵌入到C程序
這篇文章主要介紹了將Python代碼嵌入C++程序進行編寫的實例,盡管通常還是Python代碼中調用C++程序的情況較多...需要的朋友可以參考下
把python嵌入的C++裡面需要做一些步驟
安裝python程序,這樣才能使用python的頭文件和庫
在我們寫的源文件中增加「Python.h」頭文件,並且鏈入「python**.lib」庫(還沒搞清楚這個庫時靜態庫還是導出庫,需要搞清楚)
掌握和了解一些python的C語言api,以便在我們的c++程序中使用
常用的一些C API函數
在了解下面的函數之前有必要了解一下**PyObject***指針,python裡面幾乎所有的對象都是使用這個指針來指示的。
Py_Initialize()&&Py_Finalize()
在調用任何python的c函數之前需要調用的函數,「Py_Initialize」是用來初始化python模塊的,推測是載入初始化載入dll的。對應的在使用python模塊之後用「Py_Finalize」來釋放模塊。
PyImport_ImportMole()
用來載入一個python模塊,這個模塊就是一般的python文件。這里需要注意的是,在載入這個模塊的時候會執行模塊裡面所有可以執行的語句。包括import導入語句和在函數體之外的所有語句
PyObject_GetAttrString()
返回模塊裡面的函數
Py_BuildValue()
建立一個參數元組,一般都是用這個函數來建立元組,然後將這個元組作為參數傳遞給python裡面的函數。
PyEval_CallObject()
調用函數,並把「Py_BuildValue」建立的元組作為參數傳遞給被調用的函數
源碼實例
下面的實例是在c++代碼中調用Python的函數,傳遞參數並且獲取返回值
test.cpp代碼
[cpp]view plain
#include<iostream>
#include<Python.h>
usingnamespacestd;
intmain(intargc,char*argv[])
{
Py_Initialize();//初始化
PyObject*pMole=NULL;
PyObject*pFunc=NULL;
PyObject*pParam=NULL;
PyObject*pResult=NULL;
constchar*pBuffer=NULL;
intiBufferSize=0;
pMole=PyImport_ImportMole(「test_python");
if(!pMole)
{
cout<<"getmolefailed!"<<endl;
exit(0);
}
pFunc=PyObject_GetAttrString(pMole,"main");
if(!pFunc)
{
cout<<"getfuncfailed!"<<endl;
cout<<int(pFunc)<<endl;
exit(0);
}
pParam=Py_BuildValue("(s)","HEHEHE");
pResult=PyEval_CallObject(pFunc,pParam);
if(pResult)
{
if(PyArg_Parse(pResult,"(si)",&pBuffer,iBufferSize))
{
cout<<pBuffer<<endl;
cout<<iBufferSize<<endl;
}
}
Py_DECREF(pParam);
Py_DECREF(pFunc);
Py_Finalize();
//cout<<"hello"<<endl;
return0;
}
defmain(szString):
return("hello",5)
test_python.py代碼
[py]view plain
E. python與c語言的關系
C語言難,Python簡單。Python上手簡單有交互性強的開放環境,還有眾多的第三方庫,學習起來要比C語言容易很多;而C語言底層強在內存操作,功能實現起來卻十分復雜並不適合新手作為上手語言。
Python和C語言各有各的優勢,Python語法非常特殊,Python是由空格嚴格控制的,這對於剛接觸編程的人來說並不好;如果你用C語言開始編程,可以更好地掌握編程基礎,理解代碼操作原理,但是學習起來很枯燥,會阻礙你的學習,所以建議從Python語言開始學習。
對比C語言,Python不僅簡單、語法清晰,而且前景好、崗位多、薪資待遇高、就業范圍廣,絕對是0基礎的首選。
Python和C語言有什麼區別呢?來自於四點:
語言不同。C語言是一種編譯的語言,而Python是腳本語言;
全局變數方面。Python中,我們需要引用別的模塊;C語言中,需要在頭部使用include去引入;
狀態不同。C語言是靜態語言,而Python是動態語言;
數組和list不同。C語言中的數組裡面都是數字,而list包含很多不同的元素。
F. python中有C語言嗎
1.C語言是編譯語言,Python是腳本語言。說是C語言會比Python快
2.list和數組
C語言中的數組,裡面的都是數字,而list中可以包含很多不同的數據元素。
2.import和include
在C語言中使用那個庫函數,需要引入頭文件用include引入,而在python中需要引入別的模塊或者函數時需要用import引入。
兩者的不同機制是,C語言中include是告訴預處理器,這個include指定的文件的內容,要當作本地源文件出現過,而python中的import可以通過簡單的import
導入,或者是 import numpy as np
3.全局變數方面
在C語言中,聲明全局變數,如果值是恆定的,那麼可以直接用#define聲明,如果只是聲明全局,並且變數的值是可變的,那麼直接類似int a
就可以了,在python中,聲明全局變數時,需要加上global,類似global a,在函數裡面使用的時候需要先聲明global a
,否則直接用a那麼python會重新創建一個新的本地對象並將新的值賦值給他,原來的全局變數的值並不變化
G. python怎樣嵌入c
用c語言編寫一個動態庫,提供兩個函數,兩個數的整形求和,兩個浮點數的求和。取名為mylib.c。
將c函數文件編譯成so動態庫。運行gcc mylib.c -fPIC -shared -o libtest.so命令,在目錄下可以看到生成的庫文件libtest.so。
Python調用so庫文件。首先導入ctypes,其次用CDLL載入so文件,最後調用對應的函數。將python代碼保存到pydemo.py中。
執行python pydemo.py查看運行結果。
眾多python培訓視頻,盡在python學習網,歡迎在線學習!
H. python支持C語言語法嗎
樓主的問法有問題。就像漢語是否支持英語的語法一樣,Python當然不支持C的語法,否則Python和C看起來就一模一樣了。但是就像翻譯可以讓說不通語言的人交流一樣,Python可以和C通過一定的interface進行「交流」。
1.你可以Bai或者Google一下SWIG,Psyco,Pyrex等等。
2.如果你是Java或者CSharp的用戶,可以嘗試Jython或者IronPython,這樣編寫擴展極其容易。
3.當然Python本身是使用C編寫的,可以直接使用C擴展,但是比較難,需要了解Python的內部機制。
Plus:
Cpython就是使用C語言實現的Python,也就是原始的Python。和Jython(Java實現)、IronPython(C#實現)形成對比而已。
I. c可以調用python嗎
可以的。
C中內嵌Python
新建立一個工程,首先需要將工作目錄設置到Python-3.1.1PCbuild中,以獲取到動態庫,至於靜態庫的包含,Include目錄的指定,那自然也是少不了的。文件中需要包含Python.h文件,這也是必須的。
介面中
Py_Initialize();
Py_Finalize();
其他的根據需求,再引入相應的python builder 即可
J. python可以用c語言嗎
python也是一種語言c語言也是一種語言。。。。嗎語法不同。。不能通用