Fungsi Rekursif Mengembalikan Tiada dalam Python Selesai
Apabila cuba mengembalikan laluan dalam fungsi rekursif, isu boleh timbul apabila "Tiada" dikembalikan sebaliknya. Ini boleh diselesaikan dengan memastikan bahawa hasil rekursif dikembalikan. Berikut ialah penjelasan tentang sebab dan cara membetulkannya:
Dalam kod yang disediakan:
def get_path(dictionary, rqfile, prefix=[]): for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: get_path(directory[filename], rqfile, path)
Panggilan rekursif berakhir dengan get_path(direktori[nama fail], rqfile, laluan) tanpa pemulangan . Ini bermakna jika rqfile tiada dalam str(os.path.join(*path)), fungsi itu tamat tanpa memulangkan apa-apa secara eksplisit, menghasilkan nilai pulangan lalai None.
Untuk membetulkannya, rekursif keputusan harus dikembalikan seperti itu:
else: return get_path(directory[filename], rqfile, path)
Dengan sentiasa kembali pada penghujung fungsi, sama ada panggilan rekursif atau tidak, kami memastikan bahawa pulangan diberikan secara eksplisit, menghalang "Tiada" daripada dikembalikan.
Perhatikan bahawa yang lain selepas jika bukan isinstance(kamus[nama fail], dict): cawangan boleh dialih keluar, kerana fungsi itu sepatutnya kembali dalam kedua-dua kes: apabila rqfile berada dalam laluan dan apabila tidak, dan tidak perlu cawangan lain untuk menamatkan fungsi itu dengan mudah.
Atas ialah kandungan terperinci Mengapa Fungsi Rekursif Saya Mengembalikan `Tiada` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!