最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

思考分析Python運(yùn)算中?a+=b?和?a=a+b是否相等

 更新時(shí)間:2023年04月06日 10:49:57   作者:劉志軍  
這篇文章主要為大家介紹了Python運(yùn)算中a+=b和a=a+b是否相等及原理思考分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

如題,先上代碼

a+=b

>>> b = </code><code>[</code><code>0, 1, 2</code><code>]</code>
<code>>>> a = b
>>> a += [3]
>>> b
[0, 1, 2, 3]
>>> a
[0, 1, 2, 3]

此時(shí)a和b的結(jié)果是一樣的

再看

a=a+b

>>> b = [0, 1, 2]

>>> a = b
>>> a = a + [3]
>>> b
[0, 1, 2]
>>> a
[0, 1, 2, 3]

a不等于b

顯然,兩者是有區(qū)別的,而且這種區(qū)別只出現(xiàn)在可變對象(為什么是可變對象后面再說),是什么原因造成了兩者的區(qū)別呢?

+= 操作調(diào)用的是 __iadd__方法,如果對象沒有該方法時(shí),再嘗試去調(diào)用__add__方法

a = [0, 1, 2]
a += [3]
# 等價(jià)于
a=a.__iadd__([3]) 
print(a) #[0, 1, 2, 3]

__iadd__方法直接在原對象a上進(jìn)行更新,對于list來說,iadd返回self,最后是需要做一次看上去多余的賦值,因?yàn)閜ython編譯器在編譯的時(shí)候并不知道a是什么類型,統(tǒng)一編譯成這樣兼容可變和不可變類型。

+ 操作調(diào)用__add__方法

a = [0, 1, 2]
a += [3]
# 等價(jià)于
a=a.__iadd__([3]) 
print(a) #[0, 1, 2, 3]

__add__方法會返回一個(gè)新的對象,原對象不修改,因?yàn)檫@里 a被重新賦值了,a指向了一個(gè)新的對象,而b還是指向原來對象,所以出現(xiàn)了文章開頭a不等于b的情況

a = [0, 1, 2]
print(a.__add__([3]))  # [0, 1, 2, 3]
print(a)  # [0, 1, 2]

為什么前面我說這種差異只會發(fā)生的可變對象身上?因?yàn)閷τ诓豢勺儗ο?,根本沒有 __iadd__方法,所以+=和+的效果是一樣的,調(diào)的都是 __add__ 方法。

內(nèi)置對象中,常見的不可變對象和可變對象有哪些呢?這種事情ChatGPT很擅長回答。
 

ChatGPT除了給你列出表格,還會給你解釋什么是可變對象和不可變對象

可變對象是指創(chuàng)建后可以被修改的對象,例如列表、字典和集合等,這些對象可以增加、刪除、修改其中的元素。而不可變對象則是創(chuàng)建后不能被修改的對象,例如數(shù)字、字符串、元組和布爾值等,這些對象在創(chuàng)建后不能被修改。 

需要注意的是,Python 中的一些不可變對象,例如元組和命名元組,可以包含可變對象,例如列表和字典。這意味著雖然元組本身是不可變的,但是元組中包含的可變對象可以被修改。此外,Python 中還有一些特殊的對象,例如 frozenset,它是一種不可變的集合,不能被修改。

ChaGPT絕對算是一個(gè)不折不扣的輔助編程神器

AI不會讓你失業(yè),會用AI的人才會讓你失業(yè),ChatGPT不會淘汰你,能先駕馭ChatGPT的人會淘汰你。

以上就是Python運(yùn)算中 a+=b 和 a=a+b是否一樣原理的思考分析詳細(xì)內(nèi)容,更多關(guān)于Python 運(yùn)算的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中關(guān)于property使用的小技巧

    Python中關(guān)于property使用的小技巧

    俗話說條條大路通羅馬,同樣是完成一件事,Python 其實(shí)提供了好幾個(gè)方式供你選擇。property() 是一個(gè)比較奇葩的BIF,它的作用把方法當(dāng)作屬性來訪問,從而提供更加友好訪問方式
    2021-09-09
  • Python爬蟲之requests基礎(chǔ)用法詳解

    Python爬蟲之requests基礎(chǔ)用法詳解

    這篇文章主要介紹了Python爬蟲之requests基礎(chǔ)用法詳解,雖然Python的標(biāo)準(zhǔn)庫中urllib模塊已經(jīng)包含了平常我們使用的大多數(shù)功能,但是它的API使用起來讓人感覺不太友好,而requests庫使用更簡潔方便,需要的朋友可以參考下
    2023-10-10
  • Python通過paramiko庫實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法

    Python通過paramiko庫實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法

    這篇文章主要介紹了Python通過paramiko庫實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • pytorch如何利用ResNet18進(jìn)行手寫數(shù)字識別

    pytorch如何利用ResNet18進(jìn)行手寫數(shù)字識別

    這篇文章主要介紹了pytorch如何利用ResNet18進(jìn)行手寫數(shù)字識別問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 解決Pandas to_json()中文亂碼,轉(zhuǎn)化為json數(shù)組的問題

    解決Pandas to_json()中文亂碼,轉(zhuǎn)化為json數(shù)組的問題

    今天小編就為大家分享一篇解決Pandas to_json() 中文亂碼,轉(zhuǎn)化為json數(shù)組的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法

    Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法

    這篇文章主要介紹了Pycharm安裝第三方庫時(shí)Non-zero exit code錯(cuò)誤解決辦法,最好的解決辦法可以通過“Pycharm”左下角的“Terminal”,在pycharm內(nèi)使用pip安裝,以安裝“requests”為例,需要的朋友可以參考下
    2023-01-01
  • Python?迭代器和生成器概念及場景分析

    Python?迭代器和生成器概念及場景分析

    yield 是 Python 中實(shí)現(xiàn)惰性計(jì)算和協(xié)程的核心工具,結(jié)合 send()、throw()、close() 等方法,能夠構(gòu)建高效、靈活的數(shù)據(jù)流和控制流模型,這篇文章主要介紹了Python?迭代器和生成器概念,需要的朋友可以參考下
    2025-04-04
  • 詳解分布式任務(wù)隊(duì)列Celery使用說明

    詳解分布式任務(wù)隊(duì)列Celery使用說明

    這篇文章主要介紹了詳解分布式任務(wù)隊(duì)列Celery使用說明,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Python multiprocessing模塊中的Pipe管道使用實(shí)例

    Python multiprocessing模塊中的Pipe管道使用實(shí)例

    這篇文章主要介紹了Python multiprocessing模塊中的Pipe管道使用實(shí)例,本文直接給出使用實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Python正則表達(dá)式使用范例分享

    Python正則表達(dá)式使用范例分享

    本文給大家總結(jié)了7個(gè)常用的Python正則表達(dá)式的使用范例以及簡單解釋分析,有需要的小伙伴可以參考下
    2016-12-12

最新評論

察哈| 江川县| 广饶县| 宁强县| 克拉玛依市| 千阳县| 通州市| 济南市| 张家港市| 苍溪县| 六安市| 五家渠市| 金阳县| 乐东| 门源| 突泉县| 齐齐哈尔市| 彭阳县| 伊金霍洛旗| 盐亭县| 大洼县| 新竹县| 长海县| 克东县| 崇信县| 庆阳市| 秭归县| 明光市| 盐池县| 平度市| 富蕴县| 潜江市| 翼城县| 武隆县| 泰安市| 西乌珠穆沁旗| 青神县| 张北县| 河东区| 邹城市| 湟源县|