欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python不支持 i ++ 語法的原因解析

 更新時(shí)間:2020年07月22日 09:15:16   投稿:mrr  
這篇文章主要介紹了Python不支持 i ++ 語法的原因解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

簡(jiǎn)要討論為什么它不提供++作為運(yùn)算符

正常情況下,當(dāng)有人問起++原因而不是Python中的運(yùn)算符時(shí),這一行引起了我的注意。

如果您想知道最初的原因,則必須翻閱舊的Python郵件列表,或詢問那里的某個(gè)人(例如Guido)〜通過stackoverflow

這迫使我像上圖一樣思考。 真的我必須問Guido原因嗎? 好的,也許但是在那之前,我應(yīng)該嘗試一下,這促使我寫這篇文章

在C / C ++ / Java之類的語言中,對(duì)整數(shù)變量進(jìn)行自增或自減運(yùn)算是標(biāo)準(zhǔn)的,可以分為前綴運(yùn)算(++ i和–i)和后綴運(yùn)算(i ++和i–), 每個(gè)都有細(xì)微的差異和不同的目的。

當(dāng)這些語言的用戶進(jìn)入Python時(shí),他們可能會(huì)想知道為什么它不提供++或-操作。

盡管前綴++ i可能出現(xiàn)在Python中,但它不是" ++"自增運(yùn)算符。

在這種情況下,它只是兩個(gè)" +"(正號(hào))的疊加,而根本不支持" ++"后綴! (SyntaxError:語法無效)。

那么,為什么Python不支持i ++增量語法?

首先,Python當(dāng)然可以實(shí)現(xiàn)自我增強(qiáng)的效果,即以i + = 1或i = i + 1的形式編寫,這在其他語言中也很常見。

盡管Python在底部使用了不同的魔術(shù)方法(add ()和__iadd __())來完成計(jì)算,但是表面上的效果卻完全相同。

因此,我們的問題可以轉(zhuǎn)換為:為什么以上兩種書寫風(fēng)格會(huì)比i ++更好,并成為Python的最終選擇?

1. Python整數(shù)是不可變的類型

當(dāng)我們定義i = 1000時(shí),不同的語言會(huì)區(qū)別對(duì)待它們。

諸如C(寫入int = 1000)的語言將適用于內(nèi)存空間,并將其``綁定''到固定名稱i上,同時(shí)寫入變量值1000。

這里,i的地址和類型是固定的,而值是可變的。

Python(寫i = 1000)也將申請(qǐng)內(nèi)存空間,但是它將"綁定"到數(shù)字1000,即該1000的地址和類型是不可變的

因此,當(dāng)我們使我"自我增加"(i = i + 1)時(shí),兩者都被區(qū)別對(duì)待。

諸如C之類的語言首先找到存儲(chǔ)在i地址中的值,然后將其加1。 操作后,新值將替換舊值 Python的操作過程是將i指向的數(shù)字加1,然后,將結(jié)果綁定到新應(yīng)用的存儲(chǔ)空間,然后將名稱標(biāo)簽"粘貼"到新數(shù)字。

打個(gè)比方:C中的i就像是一個(gè)寄生了1000的主機(jī),而Python中的1000就像了一個(gè)寄生了i的主機(jī)。 所以我在C語言中與Python中的1000相同

綜上所述,讓我們看一下i ++,不難發(fā)現(xiàn):

在C之類的語言中,i ++可以表示i的數(shù)值屬性的增加,既不會(huì)打開新的內(nèi)存空間,也不會(huì)創(chuàng)建新的一等公民 在像Python這樣的語言中,如果i ++是對(duì)其name屬性的操作,則這沒有任何意義。 如果將其理解為對(duì)數(shù)字本體的一種操作,那么情況將會(huì)很復(fù)雜。

它將生成一個(gè)新的一等公民1001,因此需要為其分配一個(gè)內(nèi)存地址。 如果此時(shí)占用的地址為1000,則將涉及舊對(duì)象的回收,并且與1000的原始引用關(guān)系也將受到影響。 因此只能為1001打開新的內(nèi)存空間

如果Python支持i ++,則其操作過程將比C ++復(fù)雜,并且其含義不再是"將數(shù)字增加1"(遞增),而應(yīng)是"創(chuàng)建新數(shù)字"。

Python理論上可以實(shí)現(xiàn)i ++操作,但是它必須重新定義"增量運(yùn)算符",這將導(dǎo)致具有其他語言經(jīng)驗(yàn)的人誤解。

最好讓每個(gè)人都直接寫i + = 1或i = i + 1。

2. Python具有可迭代的對(duì)象

諸如C / C ++之類的語言已將i ++設(shè)計(jì)為主要是為了方便使用三部分的for循環(huán)結(jié)構(gòu)。

 

這種程序與數(shù)字本身的自增過程有關(guān)。 數(shù)字的增加與程序主體的執(zhí)行有關(guān)。

Python中沒有這種結(jié)構(gòu),它提供了一種更優(yōu)雅的方法:

這里反映了不同的思維方式。

  • 它關(guān)心值范圍內(nèi)的迭代遍歷。
  • 它不在乎或不需要人為添加數(shù)字。

Python中的可迭代對(duì)象/迭代器/生成器提供了很好的迭代/遍歷用法,并且可以完全替代i ++。

例如,Python可以使用enumerate()與上述示例中的值同時(shí)遍歷下標(biāo)和特定值。

再舉一個(gè)例子,對(duì)于字典遍歷,Python提供了keys(),values(),item()和其他遍歷方法,這些方法非常易于使用:

 

不僅在Python中很少使用i + = 1或i = i + 1,而且迭代對(duì)象的可用性使操作值范圍變得容易,并且很少有人要求對(duì)其進(jìn)行累加。

因此,回到我們最初的問題,這兩種"自增"方法并不比i ++好多少,僅僅是因?yàn)樗鼈兪峭ㄓ貌僮?/p>

這就是為什么無需引入新的運(yùn)算符,Python會(huì)繼續(xù)提供基礎(chǔ)支持的原因。 真正的贏家是各種各樣的可迭代對(duì)象!

摘要

Python不支持遞增運(yùn)算符,原因如下:

因?yàn)樗恼麛?shù)是一類不變的一等公民,所以如果要支持增量運(yùn)算(++),將會(huì)帶來歧義

含糊不清的原因:在本故事中

主要是因?yàn)樗哂懈线m的實(shí)現(xiàn),即迭代對(duì)象,它對(duì)遍歷操作具有良好的支持。

到此這篇關(guān)于Python不支持 i ++ 語法的原因解析的文章就介紹到這了,更多相關(guān)Python不支持 i ++ 語法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)批量檢測(cè)ip地址連通性

    Python實(shí)現(xiàn)批量檢測(cè)ip地址連通性

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量檢測(cè)ip地址連通性并以json格式顯示(支持傳參單IP或者網(wǎng)段),感興趣的小伙伴可以了解下
    2024-04-04
  • python requests 使用快速入門

    python requests 使用快速入門

    這篇文章主要介紹了python requests 使用快速入門教程,使用 Requests 發(fā)送網(wǎng)絡(luò)請(qǐng)求非常簡(jiǎn)單,具體操作方法,大家參考下本文吧
    2017-08-08
  • PyTorch里面的torch.nn.Parameter()詳解

    PyTorch里面的torch.nn.Parameter()詳解

    今天小編就為大家分享一篇PyTorch里面的torch.nn.Parameter()詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python書單 不將就

    Python書單 不將就

    對(duì)于學(xué)習(xí)Python語言,如何選擇合適的Python書單,是不是已經(jīng)眼花繚亂,不知道該選擇哪本好了呢?今天我來為大家分享幾本不可錯(cuò)過的Python好書
    2017-07-07
  • 關(guān)于Python中的同步異步阻塞與非阻塞

    關(guān)于Python中的同步異步阻塞與非阻塞

    這篇文章主要介紹了關(guān)于Python中的同步異步阻塞與非阻塞,具有一定的參考價(jià)值,有需要的朋友可以看一下
    2023-03-03
  • python?中的requirements.txt?文件的使用詳情

    python?中的requirements.txt?文件的使用詳情

    這篇文章主要介紹了python?中的requirements.txt文件的使用詳情,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • python代碼實(shí)現(xiàn)邏輯回歸logistic原理

    python代碼實(shí)現(xiàn)邏輯回歸logistic原理

    這篇文章主要介紹了python代碼實(shí)現(xiàn)邏輯回歸logistic原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Pytho的HTTP交互httpx包模塊使用詳解

    Pytho的HTTP交互httpx包模塊使用詳解

    Python 的 httpx 包是一個(gè)用于 HTTP 交互的一個(gè)優(yōu)秀且靈活的模塊。本文進(jìn)行詳細(xì)的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題

    jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題

    這篇文章主要介紹了jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python Pickle 實(shí)現(xiàn)在同一個(gè)文件中序列化多個(gè)對(duì)象

    Python Pickle 實(shí)現(xiàn)在同一個(gè)文件中序列化多個(gè)對(duì)象

    今天小編就為大家分享一篇Python Pickle 實(shí)現(xiàn)在同一個(gè)文件中序列化多個(gè)對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評(píng)論