Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah print(lirik()) mengembalikan 'Tiada' walaupun fungsi `lirik()` mencetak 'Barisan pertama'?
Mengapa Output 'Tiada'? Membongkar Dua Penyata Cetakan
Isu pelik timbul apabila menggunakan fungsi berikut:
def lyrics(): print("The very first line") print(lyrics())
Daripada "Barisan pertama" yang dijangkakan, output membingungkan mengembalikan "The baris pertama" diikuti dengan "Tiada."
Menyingkap Yang Tersembunyi Kebenaran
Penyebab di sebalik tingkah laku yang membingungkan ini terletak pada kehadiran dua kenyataan cetakan. Dalam fungsi lirik, pernyataan pertama bertanggungjawab untuk memaparkan "Barisan pertama." Walau bagaimanapun, fungsi itu tidak mengembalikan nilai secara eksplisit, yang bermaksud bahawa Python memberikan nilai lalai Tiada padanya.
Pernyataan cetakan kedua di luar fungsi kemudiannya cuba untuk mengeluarkan nilai yang dikembalikan oleh lirik(). Memandangkan fungsi mengembalikan Tiada secara berkesan, ia mencetak "Tiada" ke terminal.
Membetulkan Isu: Menerima Penyata Pemulangan
Untuk membetulkan keadaan ini dan memastikan yang diingini output, ubah suai fungsi lirik untuk mengembalikan nilai secara eksplisit. Dengan menambah penyataan pemulangan, anda boleh menentukan nilai yang dihasilkan oleh fungsi itu.
Sebagai contoh, pertimbangkan kod berikut:
def lyrics(): print("The very first line") return None print(lyrics())
Sekarang, kod akan mencetak dengan betul "Yang pertama baris," kerana pernyataan pemulangan dalam fungsi lirik secara eksplisit mengembalikan Tiada.
Memahami Pemulangan Lalai
Perlu diperhatikan bahawa jika anda meninggalkan pernyataan pulangan dalam fungsi, Python akan mengembalikan Tiada secara automatik. Walaupun tidak dinyatakan secara eksplisit dalam kod, tingkah laku ini penting untuk memahami sebab fungsi yang tidak menyatakan nilai pulangan secara eksplisit masih mencetak Tiada.
Contoh Tambahan
Untuk selanjutnya penjelasan, pertimbangkan coretan kod berikut:
def test1(): print("In function.") a = test1() print(a) # Prints None print(test1()) # Prints "In function." and then None test1() # Prints "In function." and returns None (not printed)
Dalam contoh ini, test1() secara tersirat mengembalikan Tiada kerana ketiadaan penyata pulangan. Oleh itu, penyata cetakan seterusnya berkelakuan seperti yang dinyatakan sebelum ini.
Untuk memastikan nilai pulangan tertentu, gunakan penyata pulangan dengan nilai yang dikehendaki. Contohnya:
def test(): return "ACV" print(test()) # Prints "ACV" a = test() print(a) # Prints "ACV"
Dengan mengembalikan "ACV" secara eksplisit dalam fungsi test(), output memaparkan nilai yang dimaksudkan dengan betul.
Atas ialah kandungan terperinci Mengapakah print(lirik()) mengembalikan 'Tiada' walaupun fungsi `lirik()` mencetak 'Barisan pertama'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!