إغلاق بايثون

لقد رأينا سابقًا كيفية إنشاء ملفوظيفة متداخلة في بايثون.

إذا قمت بإرجاع دالة متداخلة من دالة ، فإن هذه الوظيفة المتداخلة لها حق الوصول إلى المتغيرات المحددة في هذه الوظيفة ، حتى إذا لم تعد هذه الوظيفة نشطة.

هنا مثال بسيط على العداد.

def counter():
    count = 0
<span style="color:#66d9ef">def</span> <span style="color:#a6e22e">increment</span>():
    nonlocal count
    count <span style="color:#f92672">=</span> count <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>
    <span style="color:#66d9ef">return</span> count

<span style="color:#66d9ef">return</span> increment

increment = counter()

print(increment()) # 1 print(increment()) # 2 print(increment()) # 3

نعود الincrement()الداخلية ، والتي لا تزال قادرة على الوصول إلى حالةcountمتغير على الرغم من أنcounter()انتهت الوظيفة.


المزيد من دروس بيثون: