Bagaimana untuk Mengakses Pembolehubah Bukan Tempatan daripada Fungsi Bersarang dalam Python?

DDD
Lepaskan: 2024-10-21 18:38:29
asal
835 orang telah melayarinya

How to Access Nonlocal Variables from Nested Functions in Python?

Mengakses Pembolehubah Bukan Setempat dalam Skop Fungsi Bersarang

Dalam Python, skop fungsi bersarang menyediakan akses kepada skop yang disertakan. Walau bagaimanapun, percubaan untuk mengubah suai pembolehubah dalam skop tertutup dalam fungsi bersarang boleh mengakibatkan UnboundLocalError.

Untuk menangani isu ini, anda mempunyai beberapa pilihan:

1. Menggunakan Kata Kunci 'nonlocal' (Python 3 ):

Untuk Python 3 dan seterusnya, kata kunci bukan tempatan membolehkan anda mengikat semula pembolehubah bukan tempatan dalam fungsi bersarang.

<code class="python">def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr += 1

    inner()</code>
Salin selepas log masuk

2. Akses Tidak Langsung melalui Senarai (Python 2 dan 3):

Dalam kedua-dua Python 2 dan 3, anda boleh menggunakan senarai untuk menahan pembolehubah dan menambahnya secara tidak langsung dalam fungsi bersarang.

<code class="python">ctr = [0]

def inner():
    ctr[0] += 1</code>
Salin selepas log masuk

3. Menggunakan Pembolehubah Global (Tidak Disyorkan):

Walaupun menggunakan global boleh membenarkan akses kepada pembolehubah daripada melampirkan skop, ia biasanya tidak digalakkan kerana potensi konflik dan isu kebolehbacaan kod.

<code class="python">def outer():
    global ctr
    ctr = 0

    def inner():
        ctr += 1</code>
Salin selepas log masuk

Memilih penyelesaian yang sesuai bergantung pada versi Python khusus anda dan pertimbangan reka bentuk untuk kod anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Bukan Tempatan daripada Fungsi Bersarang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!