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

思考分析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)在可變對(duì)象(為什么是可變對(duì)象后面再說),是什么原因造成了兩者的區(qū)別呢?

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

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

__iadd__方法直接在原對(duì)象a上進(jìn)行更新,對(duì)于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__方法會(huì)返回一個(gè)新的對(duì)象,原對(duì)象不修改,因?yàn)檫@里 a被重新賦值了,a指向了一個(gè)新的對(duì)象,而b還是指向原來對(duì)象,所以出現(xiàn)了文章開頭a不等于b的情況

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • 在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解

    在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解

    下面小編就為大家分享一篇在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • OpenCV半小時(shí)掌握基本操作之像素加減乘除&邏輯運(yùn)算

    OpenCV半小時(shí)掌握基本操作之像素加減乘除&邏輯運(yùn)算

    這篇文章主要介紹了OpenCV基本操作之像素加減乘除&邏輯運(yùn)算,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 用Python編寫一個(gè)簡(jiǎn)單的CS架構(gòu)后門的方法

    用Python編寫一個(gè)簡(jiǎn)單的CS架構(gòu)后門的方法

    今天小編就為大家分享一篇關(guān)于用Python編寫一個(gè)簡(jiǎn)單的CS架構(gòu)后門的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • Python實(shí)現(xiàn)發(fā)送帶有pdf附件的電子郵件

    Python實(shí)現(xiàn)發(fā)送帶有pdf附件的電子郵件

    使用Python發(fā)郵件,是個(gè)簡(jiǎn)單的話題,可是如何可以優(yōu)雅的輕松的群發(fā)郵件,并附加PDF附件,是很多小伙伴的日常工作。本文就來和大家分享一下實(shí)現(xiàn)方法,需要的可以參考一下
    2023-02-02
  • Python學(xué)習(xí)筆記之os模塊使用總結(jié)

    Python學(xué)習(xí)筆記之os模塊使用總結(jié)

    這篇文章主要介紹了Python學(xué)習(xí)筆記之os模塊使用總結(jié),本文總結(jié)了多個(gè)常用方法,需要的朋友可以參考下
    2014-11-11
  • Python實(shí)現(xiàn)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例

    Python實(shí)現(xiàn)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Django與JS交互的示例代碼

    Django與JS交互的示例代碼

    本篇文章主要介紹了Django與JS交互的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • pytorch 準(zhǔn)備、訓(xùn)練和測(cè)試自己的圖片數(shù)據(jù)的方法

    pytorch 準(zhǔn)備、訓(xùn)練和測(cè)試自己的圖片數(shù)據(jù)的方法

    這篇文章主要介紹了pytorch 準(zhǔn)備、訓(xùn)練和測(cè)試自己的圖片數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 在python中解決死鎖的問題

    在python中解決死鎖的問題

    這篇文章主要介紹了在python中解決死鎖的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python中endswith()函數(shù)的基本使用

    Python中endswith()函數(shù)的基本使用

    這篇文章主要介紹了Python中endswith()函數(shù)的基本使用,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),該函數(shù)可以用來檢測(cè)文件類型,需要的朋友可以參考下
    2015-04-04

最新評(píng)論