⊗pyPmFnNl 21 of 129 menu

Penyata nonlocal dalam Python

Terdapat kes di mana fungsi luaran mempunyai pembolehubah yang perlu diakses oleh fungsi dalaman. Mari isytiharkan pembolehubah i dalam fungsi outer. Berkaitan dengan fungsi dalaman, pembolehubah ini akan menjadi luaran (pembolehubah global hanya yang diisytiharkan dalam kod luaran). Dan untuk fungsi inner, kita tetapkan penambahan satu kepada i:

def outer(): i = 0 def inner(): i += 1 # akan menghasilkan ralat inner() return i

Walau bagaimanapun, untuk inner, pembolehubah i adalah lokal, Python menganggapnya tidak diisytiharkan dan memaparkan ralat yang sepadan. Dahulu, ralat sedemikian diperbetulkan menggunakan penyata global. Walau bagaimanapun, di sini i adalah pembolehubah luaran, oleh itu arahan nonlocal harus digunakan. Ia mengambil nama pembolehubah yang disenaraikan dalam skop yang terdekat, tidak termasuk skop global, iaitu i di dalam inner akan diambil dari pembolehubah yang diisytiharkan di atas fungsi ini:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # akan memaparkan 1

Dalam kod berikut, seorang pengaturcara telah melakukan kesilapan:

num = 10 def outer(): num = 5 def inner(): num -= 2 inner() return num print(outer())

Apakah masalah dengan kod ini? Cari dan betulkan ralat pengarang kod.

Dalam kod berikut, seorang pengaturcara telah melakukan kesilapan:

num = 3 def outer(): num += 1 tst = num def inner(): tst = tst ** 3 inner() return tst print(outer())

Apakah masalah dengan kod ini? Cari dan betulkan ralat pengarang kod.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak