python自增自減?賦值語句返回值?逗號表達式?


咳咳,直接進入正題吧。

自增自減(++/--),以及賦值語句,還有逗號表達式都是在C/C++中常見的運算符或表達式。

熟悉C/C++的小伙伴們都知道,在C/C++中:

自增自減(前綴/后綴)運算符將實現對變量值的 加1/減1;  類似 x = 0; ++x;的語句會使最終 x 的值為1

賦值語句將所賦的值作為該語句的返回值(值傳遞);  類似 (x = func()) > 0; 的語句會將函數 func()的返回值賦給 變量x ,並繼續執行 x > 0的條件判斷語句,這樣的語句在C/C++中顯然是合法且簡潔的

逗號表達式用逗號作為語句間的分隔符,並以最后一個表達式的值作為整個逗號表達式的值;  類似 x = 5, y = 6, x > y;的語句就是一個逗號表達式,先執行x= 5,再執行y= 6,最終比較 x > y結果為 0 ,0就是該逗號表達式的結果

但是!!!

這些!!!

在python里通通無效!!!

先來看第一個實例

 

 注意 ++x 和 --x得到的值均為 x的值 5 ,也就是說++/--並沒有像我們想象的那樣將x 的值+1/-1,這個偽自增自減可真是夠狠的。

而且我們注意到后綴的++/--不僅沒有做出改變,反而還提示語法錯誤

python lady真的讓人琢磨不到頭腦啊

問題先放在這,來看下一個實例

 

 這里我仍然像使用C一樣使用了這一連串的語句,最終判斷 x 的值是否大於0,但是直接報錯 SyntaxError!

可見這一連串的語句並不能正常運行,那么問題出在哪了呢?

緊接着看最后一個實例

 

 顯然我用C的語法在這里寫了一個逗號表達式,逗號表達式中包含了賦值語句

python lady依舊毫不留情的報錯

 

答案在這里:

1.python中並沒有自增自減運算符,有的只是作為正負號(+/-)的數學符號

所以上例中 ++x 相當於給 x的值取正再取正,而 --x相當於給 x的值取負再取負,自然最后x的值不會發生變化

而我們都知道數學中正負號只能位於數字的前邊,並不能位於數字后面(變成加減號),因此 C里面的后綴++/--在python里面理所應當的報錯啦

看一個例子加深一下理解

 

 怎么樣,這樣就清楚多了吧

2.python中賦值語句采用的引用傳遞方式,而不是值傳遞

也就是 y = x = 5 是正確的,傳遞的是引用,而 y = (x = 5)就是錯誤的

前者屬於python中的鏈式賦值,從左往右,先將y引用對象5,再讓x引用對象5,;

后者由於在python中賦值號從左至右,但括號優先級高,故先讓x引用對象5,而x= 5是沒有返回值的,因此就相當於將一個沒有返回值的結果賦值給y

參考鏈接:https://blog.csdn.net/weixin_34320159/article/details/93577037

3.還記得python中同時賦值的語句嗎?

x,y,z = 3,4,5

這條語句讓x引用3,y引用4,z引用5,;同時賦值要求等號兩邊數目對等。

而在示例語句中 x= 5, y = 6, x < y

將逗號與賦值混合使用,python lady自然先考慮賦值,發現前半段 x = 5, y不對等,直接就報錯

可見在python中並沒有C/C++中的逗號表達式

在python中逗號的作用有2:

  a>分隔符,如我們的多個變量同時賦值語句

  b>類型轉換,還記得元組中提到的 (5) 與 (5,)的區別嗎?前者類型為 int, 后者類型就是 tuple元組啦

每日精進一點點,加油!

------------------------------------------分隔線-----------------------------------

再補一個python中遇到的小知識

x,y,x = eval(input())

在使用eval()並且同時為 x,y,z三個變量賦值時,輸入格式應用逗號隔開,而不是其他分隔符

---------------------------------------------end-----------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM