Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah print(lirik()) mengembalikan 'Tiada' walaupun fungsi `lirik()` mencetak 'Barisan pertama'?

Mengapakah print(lirik()) mengembalikan 'Tiada' walaupun fungsi `lirik()` mencetak 'Barisan pertama'?

DDD
DDDasal
2024-12-08 22:28:13865semak imbas

Why does print(lyrics()) return

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!

Kenyataan:
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