Bagaimanakah tugasan berantai berfungsi dalam Python? Adakah ia benar-benar setara dengan beberapa tugasan berurutan?

Susan Sarandon
Lepaskan: 2024-10-28 03:07:31
asal
1004 orang telah melayarinya

How do chained assignments work in Python? Are they truly equivalent to multiple sequential assignments?

Memahami Tugasan Berantai dalam Python

Tugasan berantai dalam Python, dicontohkan oleh ungkapan seperti "x = y = somefunction()", telah mencetuskan perbincangan mengenai kesetaraan mereka dengan beberapa tugasan berurutan ("x = somefunction(); y = somefunction()"). Untuk menjelaskan perkara ini, mari kita terokai pengendalian tugasan berantai secara terperinci.

Dalam tugasan berantai, sasaran paling kiri ditetapkan terlebih dahulu. Oleh itu, "x = y = somefunction()" adalah bersamaan dengan:

temp = somefunction()
x = temp
y = temp
Salin selepas log masuk

Tertib ini adalah penting, kerana sasaran di sebelah kiri menerima nilai pembolehubah sementara "temp" sebelum ia ditugaskan kepada sasaran ke kanan. Ini jelas dalam pembongkaran fungsi tugasan berantai:

>>> def chained_assignment():
...     x = y = some_function()
...
>>> import dis
>>> dis.dis(chained_assignment)
  2           0 LOAD_GLOBAL              0 (some_function)
              3 CALL_FUNCTION            0
              6 DUP_TOP
              7 STORE_FAST               0 (x)
             10 STORE_FAST               1 (y)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE
Salin selepas log masuk

Perhatikan bahawa nilai yang dikembalikan oleh fungsi disimpan dalam "x" dahulu, kemudian dalam "y."

Ini pemahaman adalah penting untuk memahami tingkah laku tugasan berantai. Sebagai contoh, ungkapan seperti "x = y = []" harus dielakkan, kerana kedua-dua "x" dan "y" akan merujuk kepada senarai yang sama. Sebaliknya, pilih tugasan berasingan seperti "x = []" dan "y = []" untuk membuat senarai yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah tugasan berantai berfungsi dalam Python? Adakah ia benar-benar setara dengan beberapa tugasan berurutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!