Argumen Bersarang dalam Python 3
Apabila menjalankan kod Python yang menyertakan argumen tuple bersarang sebagai parameter fungsi, seseorang mungkin menghadapi ralat sintaks:
File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9 def add(self, (sub, pred, obj)): ^ SyntaxError: invalid syntax
Punca
Dalam Python 3, pembongkaran parameter tuple telah dialih keluar. Ini bermakna fungsi tidak lagi boleh menerima tupel sebagai argumen dan membongkarnya terus ke dalam pembolehubah.
Penyelesaian: Nyahpek Secara Manual
Untuk menyelesaikan ralat sintaks, anda perlu mengubah suai fungsi untuk membongkar tuple secara manual ke dalam pembolehubah individu. Berikut ialah contoh:
<code class="python">def add(self, sub_pred_obj): # Previous syntax: def add(self, (sub, pred, obj)) sub, pred, obj = sub_pred_obj # ... rest of the function</code>
Pengubahsuaian ini membongkar sub_pred_obj tuple ke dalam pembolehubah individu sub, pred dan obj.
Nota Tambahan
Jika fungsi tersebut ialah fungsi lambda, pembongkaran manual tidak boleh dilakukan. Sebaliknya, pertimbangkan untuk menghantar tupel sebagai parameter tunggal dan mengakses elemennya melalui pengindeksan:
<code class="python">lambda xy: (xy[1], xy[0]) # Instead of: lambda (x, y): (y, x)</code>
Atas ialah kandungan terperinci Mengapa Python 3 Memberi Ralat Sintaks Apabila Menggunakan Argumen Tuple Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!