Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah tugasan berantai berfungsi dalam Python? Adakah ia benar-benar setara dengan beberapa tugasan berurutan?
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
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
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!