Python ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam pengkomputeran saintifik, analisis data, automasi, pembangunan web dan bidang lain. Dalam pembangunan aplikasi Python, ralat parameter panggilan haram ialah ralat pengaturcaraan biasa, yang mungkin menyebabkan program ranap atau hasil yang dijalankan tidak konsisten dengan jangkaan. Artikel ini akan memperkenalkan punca parameter panggilan haram dalam Python dan cara menyelesaikan ralat ini.
1. Cara memanggil parameter dalam Python
Dalam Python, terdapat dua cara untuk memanggil fungsi dan kaedah:
Parameter kedudukan merujuk kepada parameter yang dihantar mengikut susunannya ditakrifkan. Sebagai contoh, definisi fungsi berikut mempunyai dua parameter kedudukan a dan b:
def add(a, b): return a + b
Apabila memanggil fungsi, anda boleh menghantar parameter dalam susunan parameter kedudukan:
result = add(1, 2)
Di sini 1 dan 2 diberikan kepada parameter a dan b masing-masing, dan fungsi mengembalikan 3.
Parameter kata kunci ialah parameter yang diluluskan mengikut nama parameter. Contohnya, takrifan fungsi berikut mempunyai dua parameter kata kunci x dan y:
def sub(x, y): return x - y
Apabila memanggil fungsi, anda boleh menghantar parameter dengan menyatakan nama parameter:
result = sub(x=3, y=1)
Di sini 3 dan 1 masing-masing diberikan kepada parameter x dan y, dan fungsi kembali 2.
2. Punca ralat parameter panggilan Python yang tidak sah
Ralat parameter panggilan Python yang tidak sah biasanya mempunyai sebab berikut:
Apabila memanggil fungsi atau kaedah, bilangan parameter yang diluluskan adalah tidak sepadan dengan definisi Apabila bilangan parameter tidak sepadan, ralat parameter haram akan berlaku. Sebagai contoh, definisi fungsi berikut mempunyai dua parameter kedudukan a dan b, tetapi hanya satu parameter yang diluluskan apabila memanggil:
def add(a, b): return a + b result = add(1)
Hanya satu parameter 1 diluluskan di sini, tetapi definisi fungsi memerlukan dua parameter kedudukan, jadi parameter itu akan menyalahi undang-undang .
Apabila menggunakan parameter kedudukan dan parameter kata kunci secara bercampur-campur, ini boleh menyebabkan ketidakpadanan parameter. Sebagai contoh, definisi fungsi berikut mempunyai dua parameter kedudukan a dan b dan parameter kata kunci c:
def func(a, b, c=0): return a + b + c
Apabila memanggil fungsi, anda boleh menghantar nilai kepada parameter kata kunci c dengan menyatakan nama parameter:
result = func(1, 2, c=3)
Anda juga boleh gunakan parameter kedudukan Melepasi nilai parameter:
result = func(1, 2, 3)
Walau bagaimanapun, jika parameter kedudukan diluluskan menggunakan parameter kata kunci c, ralat parameter haram akan berlaku:
result = func(1, 2, c=4, 5)
Kedua-dua parameter kata kunci dan parameter kedudukan digunakan di sini, mengakibatkan ketidakpadanan parameter.
Ralat parameter yang tidak sah juga boleh berlaku apabila jenis parameter yang diluluskan tidak konsisten dengan jenis parameter yang ditentukan oleh fungsi atau kaedah. Sebagai contoh, definisi fungsi berikut memerlukan parameter integer:
def func(num): return num * 2
Tetapi apabila parameter rentetan diluluskan, ralat parameter haram berlaku:
result = func('hello')
Apa yang diluluskan di sini ialah parameter jenis rentetan, tetapi definisi fungsi memerlukan Parameter taip integer.
3. Bagaimana untuk menyelesaikan ralat parameter panggilan Python haram
Apabila ralat parameter Python haram berlaku, penyelesaian biasa termasuk yang berikut:
Mula-mula anda perlu menyemak semasa membuat panggilan fungsi atau kaedah Sama ada bilangan dan jenis parameter yang diluluskan adalah konsisten dengan bilangan dan jenis parameter yang ditakrifkan oleh fungsi atau kaedah. Sebagai contoh, kod berikut menyemak sama ada bilangan parameter yang diluluskan semasa memanggil fungsi adalah betul:
def func(a, b, c): pass args = (1, 2, 3) if len(args) != 3: print('参数数量不正确') else: func(*args)
Di sini, tuple args digunakan untuk menyimpan parameter yang diluluskan, dan kemudian menyemak sama ada panjang args adalah sama dengan 3. Jika tidak , ia menggesa bahawa bilangan parameter tidak betul, jika tidak func dipanggil fungsi.
Menggunakan parameter kata kunci boleh mengelakkan masalah susunan parameter yang salah dan juga boleh meningkatkan kebolehbacaan kod. Sebagai contoh, kod berikut memanggil fungsi menggunakan argumen kata kunci:
def func(a, b, c): pass params = {'a': 1, 'b': 2, 'c': 3} func(**params)
Di sini, param kamus digunakan untuk menyimpan parameter yang diluluskan apabila fungsi dipanggil, dan kemudian **params digunakan untuk membongkar parameter dalam param dan menghantarnya kepada fungsi.
Menetapkan nilai lalai untuk parameter fungsi atau kaedah boleh menjadikannya lebih fleksibel apabila dipanggil. Sebagai contoh, definisi fungsi berikut menetapkan nilai parameter lalai:
def func(a, b=0, c=0): pass
Apabila memanggil fungsi, anda boleh menghantar hanya satu parameter a, atau anda boleh menghantar kedua-dua b dan c pada masa yang sama:
func(1) # 只传递a参数,b和c使用默认值0 func(1, 2, 3) # 传递a、b和c参数 func(a=1, c=3) # 使用关键字参数传递a和c参数,b使用默认值0
Nilai lalai daripada b dan c di sini adalah kedua-duanya 0, Jika tiada parameter diluluskan, nilai lalai digunakan.
Apabila ralat parameter Python haram berlaku, atur cara mungkin ranap atau mengeluarkan mesej ralat. Untuk mengelakkan situasi ini, pengecualian boleh ditangkap dan dikendalikan dalam program. Sebagai contoh, dalam kod berikut, pernyataan cuba-kecuali digunakan untuk menangkap pengecualian dengan parameter haram:
def func(a, b): pass try: result = func(1) except TypeError: print('参数不合法')
Hanya satu parameter diluluskan apabila memanggil fungsi func, tetapi definisi fungsi memerlukan dua parameter, jadi ralat parameter haram berlaku . Gunakan pernyataan cuba-kecuali untuk menangkap dan mengendalikan pengecualian ini dan mengeluarkan maklumat segera.
Ringkasnya, ralat parameter panggilan Python yang tidak sah boleh menjejaskan hasil berjalan dan prestasi program, tetapi ralat ini boleh dielakkan dengan menggunakan kaedah yang sesuai. Dalam pengaturcaraan harian, anda perlu menyemak nombor, jenis dan nilai lalai parameter fungsi atau kaedah dengan teliti dan elakkan menggunakan kaedah lulus parameter campuran. Pada masa yang sama, untuk pengecualian yang tidak dapat dielakkan, pernyataan cuba-kecuali perlu digunakan untuk menangkap ralat dan mengendalikan pengecualian.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat parameter panggilan tidak sah Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!