Bu davranış sözcük kapsam denir: (gerekirse sözdiziminde) Aşağıdaki kod çalışır diller var mıdır. # 2'de tanımladığınız şey, sözel açıklamanın yanıltıcı olmasına rağmen dinamik kapsam olarak adlandırılır ("işlevleri çağırmak" veya "etkinleştirme kayıtları" nın daha doğru olacağını "kapsayan kapsamlar" dırsınız). Genel kullanımda herhemen hemen her Python değil, sözcüksel genişleme kullanır. Bu C# ve ECMAScript/JavaScript içerir (eval
ve with
barring), "ECMA dilleri" ile ne demek istediğimi varsayalım. Diller var ve bazıları hala kullanılıyor. Emacs Lisp birdir ve Perl hem sözcüksel hem de dinamik kapsam belirleme sunar.
Sözcüksel kapsam belirleme mantığı sadece performans için değil (kapaklar dahil olmak üzere tam anlamıyla sözcük kapsamının gerçek bir performansa sahip maliyeti, funcarg sorunlarına bakın), basitlik ve güvenilirlik içindir. İlk önce dili öğrenirken şaşırtıcı olsa da, kurallar aslında çok basittir, bu yüzden deneyimli bir programcı, hangi tanımlayıcının hangi kapsamda kullanıldığını anlatabilir. Bu işlevler, yürütme işlevini kim tarafından etkilenmediği veadında değişkenlerini nasıl belirlemeye karar verdiğinden, yalıtımdaki işlevleri anlayabilir.
Kod ne yapmalı? –
"Bağlantısız yerel değişken" veya bu satır boyunca bir şey yüklemeden "f" yazdırın. – Hyperboreus