日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python 和 MicroPython 之間的差異

呂珠峰 ? 2022-12-28 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MicroPython 編程最吸引人的方面之一是它與近二十年來在桌面環(huán)境中廣泛使用的 CPython 相似。由于幾乎相同的語法和設(shè)計(jì)范例,在嵌入式和桌面開發(fā)環(huán)境之間移動(dòng)幾乎是無縫的體驗(yàn)。這在物聯(lián)網(wǎng)時(shí)代是非??扇〉?,在這個(gè)時(shí)代,來自嵌入式電子產(chǎn)品的數(shù)據(jù)必須可以在眾多平臺(tái)上訪問,包括移動(dòng)、桌面和云。如果工具和編程語言的變化最小化,開發(fā)人員可以保持精簡,產(chǎn)品開發(fā)周期可以縮短。也就是說,與桌面計(jì)算相比,嵌入式硬件環(huán)境的本質(zhì)要求 MicroPython 和 CPython 之間存在一些并非微不足道的差異。

嵌入式電子生態(tài)系統(tǒng)在許多方面受到限制,而臺(tái)式機(jī)或服務(wù)器則沒有。首先,它們受到能源消耗的限制。許多嵌入式設(shè)備都是電池供電的,因此延長電池壽命在性能方面受到限制。臺(tái)式計(jì)算機(jī)可能以幾千兆赫茲的速度運(yùn)行,而微控制器充其量只能以幾十兆赫茲的速度運(yùn)行。受限內(nèi)存和存儲(chǔ)也往往是顯著影響 CPython 和 MicroPython 之間差異的限制因素。由于內(nèi)存僅以千字節(jié)或兆字節(jié)為單位,內(nèi)存密集型功能通常會(huì)減少甚至完全從 MicroPython 實(shí)現(xiàn)中刪除。了解差異對(duì)于希望避免調(diào)試嵌入式代碼的許多令人沮喪的時(shí)間的開發(fā)人員來說非常重要。

CPython 開發(fā)人員可以訪問數(shù)百個(gè)預(yù)構(gòu)建模塊,只需一行代碼即可將這些模塊輕松添加到他們的項(xiàng)目中。這些模塊消除了在尋求向項(xiàng)目添加功能時(shí)重新發(fā)明輪子的需要。但是,許多模塊在內(nèi)存利用率方面可能非常大。MicroPython 要么消除模塊,要么提供專為嵌入式平臺(tái)設(shè)計(jì)的模塊的定制實(shí)現(xiàn)。還有嵌入式平臺(tái)獨(dú)有的模塊,例如與通用 I/O (GPIO) 引腳的接口。

CPython 使用自動(dòng)引用計(jì)數(shù)作為其內(nèi)存管理方式,而 MicroPython 使用垃圾收集。從實(shí)際的角度來看,當(dāng)需要分配內(nèi)存時(shí),MicroPython 將嘗試在堆上找到足夠大小的內(nèi)存塊。如果失敗,MicroPython 將尋求釋放內(nèi)存中未使用或冗余的對(duì)象。這是一個(gè)通常以毫秒為單位的過程?;蛘?,開發(fā)人員可以偶爾gc.collect()以預(yù)定的時(shí)間間隔運(yùn)行以清理內(nèi)存,以確保垃圾收集不會(huì)在代碼的關(guān)鍵部分發(fā)生。

語法差異可能是讓大多數(shù)開發(fā)人員陷入困境的差異類型,特別是如果您有任何重要的 CPython 經(jīng)驗(yàn),這可能會(huì)給您編程時(shí)帶來某種“肌肉記憶”。

MicroPython 要求文字?jǐn)?shù)字和關(guān)鍵字之間有空格;相比之下,CPython 則不然。

MicroPython 允許使用 := 賦值給理解變量;CPython 引發(fā)語法錯(cuò)誤。

使 Python 對(duì)編碼新手友好的設(shè)計(jì)特性之一是它處理數(shù)據(jù)類型(例如整數(shù)、布爾值、浮點(diǎn)數(shù))的方式。在 Python 中,所有數(shù)據(jù)類型都是類,變量是類的實(shí)例。然而,MicroPython 并沒有實(shí)現(xiàn)整個(gè) CPython 對(duì)象數(shù)據(jù)模型。值得注意的差異包括缺少多重繼承、__new__ 和 __del__特殊方法可能不起作用、方法解析順序不同以及不支持元類。

MicroPython 中未實(shí)現(xiàn)異常鏈接。因此,MicroPython 無法跨程序的不同抽象層重新拋出異常。

內(nèi)置類型的處理方式不同。例如,MicroPython 不支持刪除數(shù)組。

在 Python 中,函數(shù)是對(duì)象并且具有一組定義的屬性,可以通過函數(shù)調(diào)用訪問這些屬性。例如,所有函數(shù)都有一個(gè)內(nèi)置屬性__doc__,它返回函數(shù)源代碼中定義的文檔字符串。函數(shù)的用戶定義屬性在 CPython 中是可能的;但是,MicroPython 不支持它們。這樣做是因?yàn)?a target="_blank">嵌入式系統(tǒng)中通常會(huì)遇到內(nèi)存限制。

覆蓋sys.stdin, sys.stdout, 和sys.stderr是不可能的。這些是解釋器用于標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤的文件對(duì)象。這就是我們向用戶顯示文本并從用戶那里獲取輸入的方式。

未能加載的模塊仍被注冊(cè)為已加載。這是為了使模塊處理更有效率。因此,加載不包含異常處理。在部署到生產(chǎn)環(huán)境之前,一定要在開發(fā)環(huán)境中測(cè)試代碼!

該environ屬性未實(shí)現(xiàn)。相反,開發(fā)人員必須使用getenv()、putenv()和unsetenv() 方法來設(shè)置和獲取環(huán)境變量。請(qǐng)注意,該getenv() 方法只允許將一個(gè)參數(shù)傳遞給它。

該print()函數(shù)不會(huì)像 CPython 那樣檢查遞歸數(shù)據(jù)結(jié)構(gòu)(例如,遞歸列表)。MicroPython 會(huì)檢查堆棧使用情況,因此打印遞歸數(shù)據(jù)結(jié)構(gòu)不會(huì)因堆棧溢出而導(dǎo)致崩潰。

方法的錯(cuò)誤消息可能會(huì)顯示意外的參數(shù)計(jì)數(shù),因?yàn)?MicroPython 將“self”計(jì)為參數(shù)。確保在處理錯(cuò)誤消息時(shí)牢記這一事實(shí)。

JSON(JavaScript 對(duì)象表示法)是一種流行的數(shù)據(jù)交換格式,許多物聯(lián)網(wǎng)終端設(shè)備使用它來與云高效通信。如果 JSON 對(duì)象不可序列化,MicroPython JSON 模塊不會(huì)拋出異常。

該struct 模塊在 Python 值和表示為 Python 字節(jié)對(duì)象的 C 結(jié)構(gòu)之間進(jìn)行轉(zhuǎn)換。這允許有效處理存儲(chǔ)在文件中或來自傳感器常用的網(wǎng)絡(luò)連接或串行協(xié)議的二進(jìn)制數(shù)據(jù)。不幸的是,該struct.pack(format, v1, v2)函數(shù)不進(jìn)行檢查以確保為其提供了正確數(shù)量的參數(shù)。這與 CPython 實(shí)現(xiàn)形成對(duì)比,后者確實(shí)檢查參數(shù)計(jì)數(shù)。

未實(shí)現(xiàn)在數(shù)組中搜索整數(shù)的功能。因此,以下代碼將導(dǎo)致錯(cuò)誤:

import array as array

a = array.array('i', [1, 2, 3, 4])

print(1 in a)

CPython 會(huì)打印false,而 MicroPython 會(huì)返回未實(shí)現(xiàn)的錯(cuò)誤消息。

MicroPython 是一種功能強(qiáng)大且易于使用的編程語言,用于開發(fā)嵌入式應(yīng)用程序。但是,與用于創(chuàng)建桌面和云原生應(yīng)用程序的功能更豐富的 Python 實(shí)現(xiàn)相比,它是有限的。一些差異可能會(huì)在未來的 MicroPython 版本中得到修復(fù),或者隨著新功能被添加到 Python 的參考實(shí)現(xiàn)中,可能會(huì)出現(xiàn)新的差異。要查看 CPython 和 MicroPython 之間的最新差異,請(qǐng)務(wù)必在其網(wǎng)站上查看 MicroPython 的官方文檔。

審核編輯黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90328
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用PYTHON進(jìn)行的跨平臺(tái)仿真

    如何使用編程語言Python來調(diào)用和控制VirtualLab Fusion中的模擬。請(qǐng)查看下面鏈接的文檔,以找到關(guān)于如何設(shè)置和使用Python和VirtualLab Fusion之間的接口的詳細(xì)指南,以及一個(gè)
    發(fā)表于 04-02 08:21

    [VirtualLab] 使用Python運(yùn)行VirtualLab Fusion光學(xué)仿真

    摘要 VirtualLab Fusion允許Python外部訪問其建模技術(shù)、求解器和結(jié)果。這個(gè)用例介紹了一種使用路徑變量和Visual Studio代碼將Python連接到VirtualLab
    發(fā)表于 03-31 09:39

    MEMS加速度計(jì)的抗沖擊能力與耐振動(dòng)性之間的關(guān)鍵差異

    MEMS加速度計(jì)在機(jī)械應(yīng)力頻繁且劇烈的環(huán)境中應(yīng)用日益廣泛。本文探討了抗沖擊能力與耐振動(dòng)性之間的關(guān)鍵差異,這兩項(xiàng)核心指標(biāo)決定了傳感器在惡劣條件下的可靠性。文中概述了提升傳感器穩(wěn)健性的相關(guān)測(cè)試標(biāo)準(zhǔn)、失效
    的頭像 發(fā)表于 01-20 09:59 ?3975次閱讀
    MEMS加速度計(jì)的抗沖擊能力與耐振動(dòng)性<b class='flag-5'>之間</b>的關(guān)鍵<b class='flag-5'>差異</b>

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴(kuò)展)都無專利風(fēng)險(xiǎn)——專利問題僅存在于 opencv-contrib-python 擴(kuò)展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    2極電機(jī)和4極電機(jī)之間差異

    電機(jī)作為現(xiàn)代工業(yè)的核心動(dòng)力設(shè)備,其性能差異直接影響機(jī)械系統(tǒng)的運(yùn)行效率與能耗表現(xiàn)。2極電機(jī)與4極電機(jī)的本質(zhì)區(qū)別在于磁極對(duì)數(shù)設(shè)計(jì),這種結(jié)構(gòu)性差異引發(fā)了轉(zhuǎn)速、扭矩、效率及應(yīng)用場(chǎng)景的顯著分化。從空調(diào)壓縮機(jī)到
    的頭像 發(fā)表于 11-13 07:35 ?2754次閱讀

    Python調(diào)用API教程

    兩個(gè)不同系統(tǒng)之間的信息交互。在這篇文章中,我們將詳細(xì)介紹Python調(diào)用API的方法和技巧。 一、用Requests庫發(fā)送HTTP請(qǐng)求 使用Python調(diào)用API的第一步是發(fā)送HTTP請(qǐng)求,通常
    的頭像 發(fā)表于 11-03 09:15 ?1213次閱讀

    潘多拉開發(fā)板在VSCODE無法執(zhí)行micropython怎么解決?

    stm32l475-atk-pandora-mpy-v1.11.2-20200113.bin固件, 且VSCODE執(zhí)行其他python程序正常, 潘多拉在超級(jí)終端下也可以逐行執(zhí)行micropython程序,但是,在
    發(fā)表于 10-14 06:09

    vscode的rtthread micropython插件沒有創(chuàng)建工程的圖標(biāo),為什么?

    我想用micropython開發(fā)ESP32,請(qǐng)問我的vscode已經(jīng)安裝了RT-Thread micropython插件,為什么在下方?jīng)]有創(chuàng)建micropython的“+”圖標(biāo)呢?
    發(fā)表于 09-28 13:13

    目前最新版的userapps如何安裝D1s環(huán)境?

    ;gt; micropython 1.20.0 -> sdl2 2.0.16 [from:sdl2_image] -> libpng v1.6.39 [from
    發(fā)表于 09-25 07:33

    micropython 文件同步失敗是怎么回事?

    您好! 在自己的stm32f407vet6開發(fā)板上,構(gòu)建的rt-thread添加了micropython模塊。 下載運(yùn)行執(zhí)行正常。執(zhí)行將文件下載到開發(fā)板或者點(diǎn)擊“文件同步”時(shí),總提示 “所連接設(shè)備可能未處于repl狀態(tài)或者不是一個(gè)micropython設(shè)備”。 這是怎么回
    發(fā)表于 09-17 07:28

    ENV添加micropython軟件包出現(xiàn)異常的原因?

    python27.dll和platformenv_releasedenvtoolsPython27換一下。結(jié)果還是錯(cuò)誤?。 沒辦法了,就行下一步添加micropython軟件包。按照教程走出現(xiàn)了這個(gè)東西我直接
    發(fā)表于 09-12 08:06

    如何在NuMaker物聯(lián)網(wǎng)板上使用NuMicroPy(MicroPython)?

    在NuMaker物聯(lián)網(wǎng)板上使用NuMicroPy(MicroPython
    發(fā)表于 09-04 06:29

    termux調(diào)試python猜數(shù)字游戲

    用termux做一個(gè)猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實(shí)現(xiàn)方案,結(jié)合Python實(shí)現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準(zhǔn)備(Termux基礎(chǔ)配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎(chǔ)環(huán)境準(zhǔn)備 Termux是一款無需root即可在安卓設(shè)備上運(yùn)行的Linux終端
    發(fā)表于 08-29 07:06

    python app不能運(yùn)行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27
    南康市| 河池市| 宝坻区| 天津市| 德格县| 娄底市| 梁河县| 正宁县| 宕昌县| 金塔县| 威宁| 济阳县| 兴国县| 枣阳市| 红原县| 资溪县| 南乐县| 扶风县| 宁南县| 西乡县| 廊坊市| 区。| 平顶山市| 龙陵县| 达尔| 满洲里市| 赣州市| 正安县| 凌云县| 汕头市| 油尖旺区| 巴林右旗| 琼海市| 隆德县| 航空| 应用必备| 岳阳市| 叙永县| 平阳县| 福清市| 敦化市|