91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python 和 MicroPython 之間的差異

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

語法差異可能是讓大多數開發人員陷入困境的差異類型,特別是如果您有任何重要的 CPython 經驗,這可能會給您編程時帶來某種“肌肉記憶”。

MicroPython 要求文字數字和關鍵字之間有空格;相比之下,CPython 則不然。

MicroPython 允許使用 := 賦值給理解變量;CPython 引發語法錯誤。

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

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

內置類型的處理方式不同。例如,MicroPython 不支持刪除數組。

在 Python 中,函數是對象并且具有一組定義的屬性,可以通過函數調用訪問這些屬性。例如,所有函數都有一個內置屬性__doc__,它返回函數源代碼中定義的文檔字符串。函數的用戶定義屬性在 CPython 中是可能的;但是,MicroPython 不支持它們。這樣做是因為嵌入式系統中通常會遇到內存限制。

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

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

該environ屬性未實現。相反,開發人員必須使用getenv()、putenv()和unsetenv() 方法來設置和獲取環境變量。請注意,該getenv() 方法只允許將一個參數傳遞給它。

該print()函數不會像 CPython 那樣檢查遞歸數據結構(例如,遞歸列表)。MicroPython 會檢查堆棧使用情況,因此打印遞歸數據結構不會因堆棧溢出而導致崩潰。

方法的錯誤消息可能會顯示意外的參數計數,因為 MicroPython 將“self”計為參數。確保在處理錯誤消息時牢記這一事實。

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

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

未實現在數組中搜索整數的功能。因此,以下代碼將導致錯誤:

import array as array

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

print(1 in a)

CPython 會打印false,而 MicroPython 會返回未實現的錯誤消息。

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

審核編輯黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4827

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    請問如何使用micropython在K230上使用usb攝像頭?

    如何使用micropython在K230上使用usb攝像頭?
    發表于 04-23 06:10

    FS32K148HFT0VLQT和FS32K148HAT0MLQT之間的傳導/輻射發射有何差異?

    FS32K148HFT0VLQT 和 FS32K148HAT0MLQT 之間的傳導/輻射發射有何差異(如果有)?
    發表于 04-04 06:22

    如何為micropython添加自己的C代碼庫?

    部分代碼需要更高效的效率 如何為micropython添加自己的C代碼庫? 是否有教程? 如果可以的話是否可以提供一個實現實例?
    發表于 03-11 07:03

    請問DLP650NE系列1910-623AE和1910-6237E型號之間是否有差異?

    我們在使用DLP650NE系列1910-623AE使用過程中出現過:亮點、紅邊、臟污,燒壞等不良現象,實際使用不良率高達30%以上; 而DLP650NE系列1910-6237E極少出現,正常使用,請問1910-623AE和1910-6237E型號之間是否有差異?出現紅邊
    發表于 02-17 07:35

    DLP4710與DLP4711在應用、驅動方案、引腳之間是否存在差異?

    DLP4710與DLP4711在應用、驅動方案、引腳之間是否存在差異? 目前新設計的機器中,DLP4711可以正常點亮、DLP4710無法點亮。是否由于各引腳功能不是相同的導致兩者間有差異
    發表于 02-17 06:36

    使用Python實現xgboost教程

    使用Python實現XGBoost模型通常涉及以下幾個步驟:數據準備、模型訓練、模型評估和模型預測。以下是一個詳細的教程,指導你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發表于 01-19 11:21 ?1386次閱讀

    DDC264 CONV信號高低轉換差異過大怎么解決?

    目前我們在調試DDC264的數據采集,發現奇行或者偶行本身的噪聲都挺小的,在1.1到2.2之間,但是奇行和偶行之間差異比較大,合在一起計算噪聲就在1到7之間了。 也就是說CONV
    發表于 11-14 06:00

    TPS65950和TPS65951之間的功能差異

    電子發燒友網站提供《TPS65950和TPS65951之間的功能差異.pdf》資料免費下載
    發表于 10-29 10:03 ?0次下載
    TPS65950和TPS65951<b class='flag-5'>之間</b>的功能<b class='flag-5'>差異</b>

    UCC3813 PWM系列和UCC3800 PWM系列之間差異

    電子發燒友網站提供《UCC3813 PWM系列和UCC3800 PWM系列之間差異.pdf》資料免費下載
    發表于 10-22 10:21 ?0次下載
    UCC3813 PWM系列和UCC3800 PWM系列<b class='flag-5'>之間</b>的<b class='flag-5'>差異</b>

    MSP430F67xx和MSP430F67-xxA器件之間差異

    電子發燒友網站提供《MSP430F67xx和MSP430F67-xxA器件之間差異.pdf》資料免費下載
    發表于 09-14 10:14 ?0次下載
    MSP430F67xx和MSP430F67-xxA器件<b class='flag-5'>之間</b>的<b class='flag-5'>差異</b>

    《DNK210使用指南 -CanMV版 V1.0》第七章 基于CanMV的MicroPython語法開發環境搭建

    第七章 基于CanMV的MicroPython語法開發環境搭建 前面章節中已經介紹了如何編譯CanMV固件,并將編譯好的CanMV固件燒錄至Kendryte K210,本章將介紹如何在Windows
    發表于 09-13 09:30

    60V 容差板和標準 TPS272C45 評估模塊之間差異

    電子發燒友網站提供《60V 容差板和標準 TPS272C45 評估模塊之間差異.pdf》資料免費下載
    發表于 09-12 10:58 ?0次下載
    60V 容差板和標準 TPS272C45 評估模塊<b class='flag-5'>之間</b>的<b class='flag-5'>差異</b>

    光學和磁性增量編碼器之間差異應用說明

    電子發燒友網站提供《光學和磁性增量編碼器之間差異應用說明.pdf》資料免費下載
    發表于 09-12 10:07 ?0次下載
    光學和磁性增量編碼器<b class='flag-5'>之間</b>的<b class='flag-5'>差異</b>應用說明

    高階HDI線路板跟普通線路板之間差異

    高階HDI線路板與普通線路板在多個方面存在顯著差異,這些差異主要體現在線路密度、構裝技術、電氣性能及信號正確性等方面。
    的頭像 發表于 08-23 16:36 ?905次閱讀
    高階HDI線路板跟普通線路板<b class='flag-5'>之間</b>的<b class='flag-5'>差異</b>

    pytorch和python的關系是什么

    ,PyTorch已經成為了一個非常受歡迎的框架。本文將介紹PyTorch和Python之間的關系,以及它們在深度學習領域的應用。 Python簡介 Python是一種高級、解釋型、通用
    的頭像 發表于 08-01 15:27 ?3286次閱讀
    主站蜘蛛池模板: 欧美人与z0zoxxxx| 成人精品福利 | 国产三级在线视频观看 | 日日摸人人看97人人澡 | 你懂的在线免费 | 亚洲一区有码 | 国产高清色播视频免费看 | 88影视在线观看污污 | 色多多www视频在线观看免费 | 亚洲一区二区三区免费在线观看 | 毛片网子| 人操人操 | 亚洲伦理一区二区 | 五月婷婷六月婷婷 | 国产成人免费无庶挡视频 | 五色网 | 国产香蕉在线视频 | 99热这里精品 | 国产骚b | 亚洲精品91大神在线观看 | 日本精品一在线观看视频 | 欧美四色 | 天天色天天干天天 | 日韩一级欧美一级一级国产 | 天天干夜夜夜 | 特黄一级 | 免费观看四虎精品成人 | 色色视频网| 无毒在线| 乱人伦小说短篇 | 久久一级毛片 | 黄色a级免费 | 免费看啪啪网站 | 亚洲国产精品综合久久久 | 在线观看精品国产福利片100 | 操碰视频在线 | 亚洲精品在线视频观看 | 成人看的一级毛片 | 全国最大色成免费网站 | 操操插插 | 操操操综合 |