Şahıslar, katılımcılar üzerinden gitmeyeyim sayın @aib.
Herkesin bir yoğurt yiyişi vardır.
Kimsenin tercihlerini cevaplama yöntemini sorgulamam.
Kendi bileceği iştir.
Ben olaya şöyle bakıyorum.
Önemli olan soruyu cevaplamak mıdır? Yoksa bu tür sorunlarla nasıl baş edebileceğini farkettirmek midir?
Benim tercihim, balık vermek yerine balık tutmayı anlatmak.
Yani “global” ne işe yarar diye soran birinin, python referansı okumayı ve oradan çözmesini önermek benim için tercihtir.
Bu nedenle girip bir referans linki atıp çıkacaktım mesaja.
Çünkü, her anahtar kelimeyi, her kod satırını bu nedir diye sormak zorunda kalacağına birinin nereye bakacağını göstermek daha mantıklı geliyor.
İkinci husus, bazı katılımcılar öğrenmek yerine işini hızlıca görmek ve gitmek ister, tabi ki bunlar sadece hazır koddan ibaret cevabını alıp çıkmayı isteyebilir.
Ama bu benim için çözüm değil.
Sizin dediğiniz gibi bazılar pat diye bir kod yapıştırıp çıkabiliyor, soran da bu kadarcıksa ihtiyacı kodu alıp gidiyor. Bu benim için iyi bir şey, bir şey öğrenmek mi istiyor yoksa bir parça işini görüp gitmek mi ayırabilmiş oluyorum.
Açıkcası bu kadar uzun yazmamın sebebi şuydu, dediğim gibi, bir link bırakıp çıkacaktım. Her satırını anlamadım diyen birine ne söylenebilir diye çok üstelemedim.
Ama bir açıklama var ve açıklamayı yapanın açıklaması bana yeterli geldi.
Hatta değinilmeyen bir açıdan açıklamayı yapana katkı sunmak istedim.
Diğer türlü, fonksiyona parametreyle mi veri geçilmiş, referansla mı geçilmiş, global mı tanımlamış return le neden dönmemiş kodu her yerini didiklerdim ama gerek görmedim.
Fıkra şundan,
Ortada bir parça kod var, bu kadarcık veriyle nereye çekersen oraya götürürsün.
İlk yorumcu da kısa öz neden kullandığını kendince ifade etmiş.
Hayır öyle değil böyle , hatta şöylede diyerek irdelenmesinin hevesini kıracağını düşünüyorum…
Mesela ben de şöyle mi yapsaydım.
#hesap = 7
def fun(carpan):
global hesap
hesap = 7
hesap = hesap + hesap * carpan
fun(0.5)
hesap global olarak tanımladıktan sonra hesap oluşturulmuşsa dışarda tanımlı olmaksızın fonksiyon çağırıldığında artık global bir hesap değişkeni oluşur mu deseydim burun kıvırıp?
Sonra da kodu çalıştırıp, bak artık dışarda değişken tanımlı değil,
Öncesinde tanımlı olmasa dahi, fonksiyon çağırıldığında global olarak oluşturulyor falan mı deseydim.
Bence soruyu sorana bakmak lazım, sonrasında anlayabileceği ip uçları verip, anlamaya çalışmak lazım.
Ne kadar bildiğimiz değil ne kadar karşı tarafı anladığımızı önemsiyorum.
Adamı pataklar gibi cevaplamak benim tarzım değil.
Pataklayana da bir şey demem, ama biraz empati kurup, forumda cesaret gösterip iki satır bir şey yazanları hırpalamamak lazım.
Düzeltirken dahi, şöyle olmaz mı, şöyle de deneyelim mi demek benim bakış açım.
Bundan yurt dışına çıkmamış akademisyen tabiri kullandım.
Bizim tevhid-i tedrisatta döve döve öğrettiklerinden, döve döve öğretmeyi öğreniyorlar.
Azıcık farklı eğitim modellerini gören, biraz daha insancıl yaklaşıyor.
Python Variable Scope - Local, Global, Built-in, Enclosed - DataFlair (data-flair.training)
Hadi linki de vereyim.
Ahanda eksik, Built in scope a değinmemiş diye eleştirel yazmayı ben yakışsıksız buluyorum kendi yazılarımda.
Olay bundan ibaret.
Tabi sizin de bazan yazarken soranı patakladığınızı görmedim değil, bu da lazım birileri de pataklasın bazan şapşallaşıyorlar hakediyorlar demek ki diye çok üzerinde durmadım.
Ben de sonuç olarak şöyle söyleyim, benim açımdan ne kadar bildiğim yada ne kadar doğru ve kaliteli paylaşım yaptığım değil, karşımdakinin seviyesine ne kadar inebildiğim /çıkabildiğim ve onun ihtiyaçlarına ne kadar doğru cevap yazabildiğim önemli.
Kimi mavi hapı, kimi kırmızı kapı tercih ediyor. Ben kırmızı hapı tercih edenlere pembe bir dünya vaad etmiyorum.
Fıkra neden peki, Sınırlı mesajda sınırlı kodda ötesini berisini göremediğimiz zaman, adamın borusu kısa gelmiş yorumunu veremiyoruz.
Ben öncesinde tanımlı bir “hesap” değişkeni yoksa amacı şöyle yorumlardım;
Kodda global değişken çok yer kaplamasın diye fonksiyon ilk çağırılana kadar başka yerde tanımlamamış profesyonel bir yaklaşım ilginç derdim.
Yada daha önce tanımlanmış, profesyenel değil, returnle neden almamış diyebilirdim.
Yine sorduğum gibi, tkinter gibi görsel arayüz kullanırken print() kullandığını merak ederdim.
giris() fonksiyonunu merak ederdim.
Mümkünse kodun daha fazla kısmını görmek isterdim.
Böylece soba neden 1 metre yüksekte daha iyi tahminde bulunurdum.
Çünkü soruda şu var:
Yani bu cümleyi görüp de global anahtar kelimesini (keyword) örnekleyip gider miydim bilemedim.
Tabi bazı katılımcılar işinize gelirse bende böyle diyebilir.
İşte o durumda, soruyu soran da, cevaplanmaya çalışılan da, üzüm yemek yerine pataklanıyor gibi geliyor bana hepsi bu.
Tüm katılımcıları tenzih ederim.
Olabildiğince ön yargılı olmamak için cevaplara bakarken katılımcılara bakmaya çalışıyorum ki, olay şahsi gibi algılanmasın. Hep denk geliyorsa biraz da iğneyi kendimize batırmamız lazım.
Bir gün zıvanadan çıkar soru soranı pataklamaya kalkarsam beni tutun 