Kod pertama:
# -*- coding:gb2312 -*-
def get_wendu():
wendu = 22
print("您輸入的溫度是%d"%wendu)
return wendu
def get_wendu_huashi():
wendu = wendu + 3
print("您輸入的新溫度是%d"%wendu)
print("------1-------")
wendu = get_wendu()
print("------2-------")
get_wendu_huashi()
Hasil pelaksanaan kod pertama:
Kod kedua:
# -*- coding:gb2312 -*-
def get_wendu():
wendu = 22
print("您輸入的溫度是%d"%wendu)
return wendu
def get_wendu_huashi():
result = wendu + 3 #這里是對(duì)第一段代碼的修正,把前面一個(gè)wendu改成了新的變量名稱result
print("您輸入的新溫度是%d"%result)
print("------1-------")
wendu = get_wendu()
print("------2-------")
get_wendu_huashi()
Hasil pelaksanaan kod kedua:
Saya ada dua soalan:
Soalan pertama:
Mengapa pernyataan wendu = get_wendu() dilaksanakan dan hasilnya ialah: suhu yang anda masukkan ialah 22, ini bukan hanya pernyataan tugasan Apa? Sama seperti wendu = 22, tugasan sedemikian tidak akan dicetak Mengapa wendu = get_wendu() mencetak hasilnya?
Soalan kedua:
Mengapa wendu = wendu + 3 salah dalam sekeping kod pertama, tetapi bolehkah ia dilaksanakan dengan jayanya jika ia digantikan dengan hasil = wendu + 3? Adakah kerana apabila ayat wendu = wendu + 3 dilaksanakan, sistem menemui cetakan("Suhu baru yang anda masukkan ialah %d"%wendu), dan sistem tidak dapat membezakan sama ada wendu ialah wendu sebelumnya atau wendu berikutnya?
擁有18年軟件開(kāi)發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
Masalah pertama anda sebenarnya ialah anda tidak memahami pelaksanaan pernyataan Wendu = get_wendu(), get_wendu() ialah ungkapan, ia akan mengembalikan nilai, dan nilai ini akan diberikan kepada pembolehubah wendu, dan get_wendu. () Ungkapan ini ialah fungsi pelaksanaan Ia akan melaksanakan penyataan yang ditakrifkan dalam badan fungsi anda dalam urutan Jika anda menulis cetakan di dalamnya, ia secara semula jadi akan melaksanakan cetakan.
Masalah kedua anda sebenarnya adalah anda tidak memahami perbezaan antara pembolehubah tempatan dan pembolehubah global Percetakan tidak mempunyai kesan sama sekali, ia hanya disebabkan oleh rujukan pembolehubah yang berbeza.
Mula-mula, mari kita bincangkan tentang kenyataan yang boleh anda jalankan di sini.
def get_wendu_huashi():
result = wendu + 3
Di sini, pembolehubah wendu tidak diisytiharkan dan ditakrifkan di dalam fungsi, tetapi ia boleh digunakan secara langsung, sebenarnya, ia merujuk kepada pembolehubah global, iaitu pembolehubah yang ditakrifkan di sini. Ini juga menjelaskan mengapa keputusan yang dicetak ialah 22+3wendu = get_wendu()
def get_wendu_huashi():
wendu = wendu + 3
print("您輸入的新溫度是%d"%wendu)
Pembolehubah baru wendu sebenarnya diisytiharkan dalam skop dalaman fungsi, yang belum ditakrifkan Kemudian pembolehubah wendu dalam wendu+3 merujuk kepada pembolehubah baru yang tidak ditentukan ini, yang secara semula jadi menyebabkan ralat. Fahami skop global dan skop tempatan dan anda akan tahu di mana silapnya.
get_wendu()
是一個(gè)函數(shù)調(diào)用,調(diào)用 get_wendu
,get_wendu
里面 print("您輸入的溫度是%d"%wendu)
就是打印 wendu
Nilai pembolehubah tempatan ini
wendu = wendu + 3
是因?yàn)?wendu
這個(gè)變量還未定義,你就在使用它,由錯(cuò)誤信息就可以看出來(lái),UnboundLocalError: local variable 'wendu' referenced before assignment
print("您輸入的溫度是%d"%wendu)
Bukankah ayat ini hanya untuk mencetak
Python akan mencari pembolehubah dalam skop semasa secara lalai Memandangkan tiada wendu
這個(gè)變量自然也就報(bào)錯(cuò)了。你可以在 wendu = wendu + 3
前加上一句 nonlocal wendu
dalam skop semasa, ia boleh berjalan seperti biasa
print() mencetak ke output standard,
print("您輸入的溫度是%d"%wendu)
# print會(huì)打印括號(hào)中的內(nèi)容,%d表示格式化輸出int類型,
# 其實(shí)這句話和print(("您輸入的溫度是22")是等價(jià)的
Mesej ralat ialah Local variable 'wendu' referenced before assignment
, yang bermaksud pembolehubah wendu tidak digunakan sebelum panggilan. Saya percaya anda akan terkejut jika anda menterjemah mesej Ralat ini Nama diisytiharkan dalam wendu = get_wendu() tetapi ia mengatakan tidak, tetapi komputer tidak berkuasa rendah seperti yang anda fikirkan = =, = digunakan untuk tugasan, ia. mesti Tahu wendu yang mana.
Alasannya ialah untuk penugasan pembolehubah di dalam fungsi, Python akan menganggap pembolehubah ini sebagai pembolehubah setempat, jadi wendu anda ialah pembolehubah tempatan pada masa ini dan bukan global
Anda boleh cuba mengubah suainya seperti ini
def get_wendu_huashi():
global wendu
wendu = wendu + 3
print("您輸入的新溫度是%d"%wendu)
Jangan gunakan Pinyin untuk nama pembolehubah, jangan gunakan Pinyin untuk nama pembolehubah, jangan gunakan Pinyin untuk nama pembolehubah. Gunakan pembolehubah global sesedikit mungkin Mengikut keperluan anda, adalah lebih baik untuk memilih untuk lulus parameter.