Rumah > Artikel > pembangunan bahagian belakang > Mengapa Saya Mendapat Ralat Sintaks Semasa Menentukan Argumen Bersarang dalam Python 3?
Pembangun mungkin menghadapi ralat sintaks semasa menyusun kod Python ke dalam modul kerana definisi percubaan bagi hujah bersarang. Walaupun kod yang sama berjalan lancar dalam IDLE menggunakan pilihan "Run module", ralat yang serupa seperti berikut mungkin timbul semasa pengedaran:
SyntaxError: invalid syntax File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9 def add(self, (sub, pred, obj)): ^
Ralat ini berlaku kerana pengalihan keluar daripada pembongkaran argumen tuple dalam Python 3 seperti yang dijelaskan dalam PEP 3113.
Untuk membetulkan ralat ini, kod harus diubah suai untuk menghantar tupel sebagai parameter tunggal dan membongkarnya secara manual. Kod yang terjejas, def add(self, (sub, pred, obj)):, hendaklah disemak seperti berikut:
def add(self, sub_pred_obj): sub, pred, obj = sub_pred_obj
Untuk fungsi lambda, adalah lebih baik untuk mengelak daripada membongkar sama sekali. Daripada menggunakan:
lambda (x, y): (y, x)
Adalah disyorkan untuk menulis:
lambda xy: (xy[1], xy[0])
Untuk memudahkan pengesanan dan pembetulan isu ini, pembangun boleh menggunakan program seperti "2to3," "modenkan," atau "futurize" untuk memfaktorkan semula kod Python 2.x mereka kepada Python 3.x, dengan berkesan mengenal pasti dan mencadangkan penyelesaian yang sesuai untuk pengendalian hujah bersarang.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Sintaks Semasa Menentukan Argumen Bersarang dalam Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!