python賦值語句的返回值是什麼?如x 1?

時間 2021-05-11 17:03:10

1樓:逆鱗

2021.1

py3.8的海象運算子可以相當於讓這個語句有了返回值x=(y:=1)

就可以正確賦值了,y=1沒有返回值,但是y:=1返回了y

2樓:長頸鹿大俠

感謝當時各位的回答。提問時剛入CS專業不久,因為先學的C,所以學python的時候產生的這個賦值語句返回值的問題,有趣的是現在python(>=3.8)也有了類似的設計——海象操作符。

有朋友也已經在回答中提到過了,感興趣可以去看看相關資料。

3樓:

這個 feature 叫表示式賦值 or 賦值表示式 Assignment Expressions。

Python的表示式操作是不會像C語言一樣,產生返回值的,所以不能用式子來賦值。

但是!Python 3.8 中的 PEP 572 支援表示式賦值了!

>>> b = 1

>>> (a := b) == 1

True

具體用法可以看:PEP 572

和 https://

中的介紹。

我的專欄:

流浪漢仔:[Python]算數優先順序

4樓:木頭人

python的賦值是引用傳遞,只有值傳遞才能 x=(y=1) 這樣使用,所以 C 能用,Python 中不能用,涉及到他們對記憶體的管理方式,下面簡單說明。

x=y=1

Python 賦值的流程如下:

先在記憶體中建立'1'的物件,然後將記憶體位址指標傳遞給y, 在將y 引用的位址傳遞給x,在這中間賦值時不會產生返回值,python的賦值只是引用傳遞而已。

x=(y=1) 由於它傳遞的是引用位址,右邊 y=1將它賦值給 x 時該等式不成立,你是傳引用位址給y給x, 還是傳 1 物件給 x;再說python認為 y 和 1 是兩個物件,y 是1的引用指標物件,1 是記憶體實際存在的1物件。

C語言的賦值是值的傳遞, y=1 是個整體,他就是值1,所以他能將 y=1 傳遞給 x 。

5樓:那美克

x = (y=1)

先執行括號內計算,但 = 屬於賦值,不屬於運算子,所以會報錯

至於返回值,我在 Jupyter 裡面敲過,反正結果跟返回 None 沒什麼區別

C 的函式返回值是如何構造的?

你如果是想問為什麼少輸出乙個new的話,那是因為F在隱式建立返回值物件的過程中,呼叫的是複製建構函式A const A 而不是預設的無參建構函式A 所以你自定義的無參建構函式A 並沒有捕獲到這次構造。include using namespace std struct A A A const A o...

JS 建構函式返回值的問題

如果return的值是object,那麼就返回這個return的object,前面的this就都是無效的 如果return的值型別不是object,就還是返回this 搬運一下Annotated ES5 11.2.2 The new Operator The production NewExpres...

為什麼不把要返回元素直接當成函式的返回值返回呢?

phoenix bool get elem elem get throw elem get bool 回字的四種寫法 iter get tuple get 想到再加 ant 有些時候乙個返回不夠用啊,函式中好幾個值需要傳出時只能通過引數傳遞實現,而不能簡單的通過函式返回值。當然,你也可以設計乙個資料...