"Python yerel olmayan" için yapılan bir Google araması , ifadenin arkasındaki sözdizimini ve mantığı tam olarak açıklayan Teklif PEP 3104'ü getirdi . Kısacası, tam olarak aynı şekilde çalışır.global
işlev için ne küresel ne de yerel değişkenleri ifade etmek için kullanılması dışında ifadeyle çalışır.
İşte bununla neler yapabileceğinizin kısa bir örneği. Sayaç üreteci bunu kullanmak için yeniden yazılabilir, böylece daha çok kapaklı dillerin deyimlerine benzeyebilir.
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
Açıkçası, bunu bir jeneratör olarak yazabilirsiniz, örneğin:
def counter_generator():
count = 0
while True:
count += 1
yield count
Ancak bu mükemmel deyimsel python olsa da, ilk versiyonun yeni başlayanlar için biraz daha açık olacağı anlaşılıyor. Jeneratörleri uygun şekilde kullanmak, döndürülen işlevi çağırarak ortak bir karışıklık noktasıdır. İlk sürüm açıkça bir işlev döndürür.