python input函数赋值法_大佬们 我是刚开始学python的小白 遇到这种赋值方式 实在不懂这个a+b是赋值给谁的 求解...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
這個是python獨有的賦值方法 萌新不懂很正常啦
這個叫做“元組賦值法” 他會把前后兩個部分當成一個元組去操作 所以在賦值過程中值不會改變 只有結束賦值后才會改變
什么意思呢 也就是說逗號前面和逗號后面賦值是【同時發生】的
舉個例子
a=1
b=0
a, b = a+1, a+1
最后的結果是a和b都是2
然而如果你先a = a+1 再a = b+1 那么結果是a為2 b為3 因為這一串操作時先a后b的 而元組賦值法可以視為是【同時發生】的賦值行為
這種賦值方法可以免除我們很多的麻煩 最簡單的例子就是:交換變量
以前聽過一個笑話 說3個程序員 兩個是學c系列語言的 還有一個是學python的 他們討論怎么交換變量的值
普通c語言程序員寫到(c的語法和python不一樣 但是類似 第一行等價于def swap(a, b):):
void swap(int &a, int&b){
temp = a;
a = b;
b = temp;}
二逼c語言程序員寫到:
void swap(int &a, int&b){
a = a^b;
b = a^b;
a = a^b;}
python程序員寫到:
def swap(a, b):
a, b = b, a
可以看出 有了元組賦值法 其他語言至少需要3行的交換行為現在只需要1行就ok了
另外有人可能不大明白 明明沒有括號 為什么他們還是元組呢?
我這里再重申一遍 元組的關鍵字(就是看到他就知道他是元組 比如列表的關鍵字是[] 字典是{})不是小括號 而是逗號
你可以嘗試一下如下的代碼
a = 1, 2
type(a)
返回的結果是 意思是:元組
【進階】
那么為什么元組賦值法在過程中變量不改變呢?
首先我們補全一下這行代碼(以你的代碼為例):
(a, b) = (b, a+b)
好的 現在前后都是一個元組了
但是我們還是不明白 那我們把他拆開來
首先前面是一個元組:
tuple1 = (a, b)
后面也是一個:
tuple2 = (b, a+b)
假設a和b分別為1、2
那么現在
tuple1 → (1,2)
tuple2 → (2, 3)
然后我們進行賦值操作
tuple1 = tuple2
這就是結果了嗎 不是的 因為tuple1是我們虛構出來的“臨時變量” 并不是程序員可以直接使用的變量
于是我們還原回去
a = tuple1[0]
b = tuple1[1]
完美 這就是為什么我們稱它【賦值是同時發生的】了
學完這些 機制的你會發現我們最后的賦值其實可以這么寫
a, b = tuple1
這就是python簡潔的妙處
“人生苦短
我用python”
——Bruce Eckel
總結
以上是生活随笔為你收集整理的python input函数赋值法_大佬们 我是刚开始学python的小白 遇到这种赋值方式 实在不懂这个a+b是赋值给谁的 求解...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实用环境pyenv搭建教程
- 下一篇: 【杂】孔明锁6根解法 & 九连环