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
Lepaskan: 2024-12-08 22:28:13
asal
882 orang telah melayarinya

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())
Salin selepas log masuk

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())
Salin selepas log masuk

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)
Salin selepas log masuk

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"
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan