Mengapa Fungsi Python Rekursif Saya Tidak Kembali Apabila Cuba Mencari Laluan?

Linda Hamilton
Lepaskan: 2024-11-22 16:56:26
asal
486 orang telah melayarinya

Why Does My Recursive Python Function Return None When Trying to Find a Path?

Mengembalikan Laluan Secara Rekursif dalam Python

Dalam Python, anda telah menghadapi masalah semasa cuba mengembalikan laluan daripada fungsi rekursif. Sebaliknya, anda memperoleh Tiada dalam hasilnya.

Kod yang disediakan bertujuan untuk melintasi kamus yang mewakili struktur sistem fail, mencari fail yang ditentukan oleh rqfile. Laluan ke fail itu harus dikembalikan jika ditemui.

Punca isu ialah semasa mengulangi kamus, fungsi cuba mengembalikan Tiada dalam cawangan lain apabila ia menemui nilai bukan kamus. Ini menamatkan fungsi secara pramatang, menyebabkan Tiada yang dikembalikan.

Untuk membetulkannya, anda perlu secara konsisten mengembalikan hasil panggilan rekursif:

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:
        # Remove unnecessary else block
        return get_path(directory[filename], rqfile, path)
Salin selepas log masuk

Kod ini menjamin bahawa fungsi itu kembali laluan jika ia ditemui atau hasil panggilan rekursif jika laluan semasa bukan yang anda cari. Sebagai alternatif, anda juga boleh mengendalikan kes tepi di mana rqfile tidak hadir dalam laluan semasa:

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:
            return None
    return get_path(directory[filename], rqfile, path)
Salin selepas log masuk

Dengan melaksanakan salah satu daripada penyelesaian ini, fungsi anda akan mengembalikan laluan ke fail yang diminta dengan betul atau Tiada jika ia tidak ditemui.

Atas ialah kandungan terperinci Mengapa Fungsi Python Rekursif Saya Tidak Kembali Apabila Cuba Mencari Laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan