python listeye uygulama işlevi
Python işlevleri ve meth
Michael Zippo
18.11.2021
Yinelenebilir nesnelerin aksine, dizin oluşturma sözdizimini kullanan bir işlevden bir değere erişemezsiniz.
Bir i≈ülev d√∂nse bile yinelenebilir, deƒüerlerine eri≈ümeden √∂nce bir i≈ülevden gelen yanƒ±tƒ± bir deƒüi≈ükene atamanƒ±z gerekir. Aksi takdirde, bir "TypeError: ‚Äòi≈ülev‚Äô nesne abone olunamaz‚" error.
Bu kƒ±lavuzda, bu hatanƒ±n ne anlama geldiƒüinden bahsediyoruz. Kodunuzda nasƒ±l ç√∂zeceƒüinizi bulabilmeniz için bu hatanƒ±n iki √∂rneƒüini inceliyoruz.
TypeError: ‘function’ object is not inscriptable
Listeler ve dizeler gibi yinelenebilir nesnelere indeksleme gösterimi kullanılarak erişilebilir. Bu, yinelenebilir bir öğeden tek bir öğeye veya öğe aralığına erişmenizi sağlar.
Şu kodu göz önunde bulundurun:
0 dizin konumundaki deƒüer A’dƒ±r. B√∂ylece kodumuz "A‚" d√∂ndurur. Bu s√∂zdizimi bir i≈ülev uzerinde çalƒ±≈ümaz. Bunun nedeni, bir i≈ülevin yinelenebilir bir nesne olmamasƒ±dƒ±r. ƒ∞≈ülevler, yalnƒ±zca çaƒürƒ±ldƒ±klarƒ±nda yinelenebilir bir nesne d√∂ndurme yeteneƒüine sahiptir.
"TypeError: ‚Äòfunction‚Äô nesne abone olunamaz‚" bir i≈üleve yinelenebilir bir nesneymi≈ü gibi eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda hata olu≈üur.
Bu hata iki senaryoda yaygındır:
Katƒ±lƒ±mcƒ±larƒ±n %81’i belirtti bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiler. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.
Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.
İkisini de analiz edelim. bu senaryolar.
Senaryo 1: Yinelenebilir Olarak Aynı Adla İşlev
Okuldaki bir √∂ƒürenci hakkƒ±nda bilgi yazdƒ±ran bir program olu≈üturun. √ñƒürenci ve en son sƒ±nav puanƒ± hakkƒ±nda bilgiler içeren bir s√∂zluk tanƒ±mlayarak ba≈ülƒ±yoruz:
S√∂zluƒüumuzde uç anahtar ve uç deƒüer bulunmaktadƒ±r. Bir anahtar √∂ƒürencinin adƒ±nƒ± temsil eder; bir anahtar, bir √∂ƒürencinin en son testinde kazandƒ±ƒüƒ± puanƒ± temsil eder; bir anahtar √∂ƒürencinin bulunduƒüu sƒ±nƒ±fƒ± temsil eder.
Sonra, bu değerleri konsola yazdıran bir fonksiyon tanımlayacağız:
Kodumuz, "pupil‚" s√∂zluƒüundeki uç deƒüeri konsola yazdƒ±rƒ±r. "pupil‚" s√∂zluƒüu geçirilir Student() i≈ülevine bir arguman olarak.
ƒ∞≈ülevimizi çaƒüƒ±ralƒ±m ve "student‚" ; parametre olarak s√∂zluk:
Python kodumuz bir hata veriyor:
Bu hatanƒ±n nedeni ≈üudur: çunku bir fonksiyonumuz ve aynƒ± ada sahip bir yinelenebilirimiz var. "√∂ƒürenci‚" √∂nce bir s√∂zluk olarak ilan edilir. Daha sonra aynƒ± isimde bir fonksiyon tanƒ±mlƒ±yoruz. Bu, "√∂ƒürenci‚" s√∂zlukten ziyade bir fonksiyon.
"student‚" Student() fonksiyonuna bir parametre olarak, "student‚" isimli fonksiyonu geçiyoruz.
Bu sorunu √∂ƒürenci fonksiyonumuzu yeniden adlandƒ±rarak ç√∂zuyoruz:
Fonksiyonumuzu "show_student_details‚" olarak yeniden adlandƒ±rdƒ±k. Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve ne olduƒüunu g√∂relim:
Kodumuz, öğrencimiz hakkındaki bilgileri konsola başarıyla yazdırır.
Senaryo 2: Dizin Oluşturmayı Kullanarak Bir İşleve Erişme
Bir öğrenci kayıtlarının listesini filtreleyen ve yalnızca bir öğrencinin en son sınavında A notu aldığı öğrencileri gösteren program.
Bir dizi:
√ñƒürenci listemizde uç s√∂zluk bulunmaktadƒ±r. Her s√∂zluk, bir √∂ƒürencinin adƒ±nƒ± ve en son testlerinde aldƒ±klarƒ± notu içerir.
Sonra, A notu alan öğrencilerin listesini dönduren bir işlev tanımlayın:
ƒ∞≈ülev, "√∂ƒürenciler‚" adlƒ± bir √∂ƒürenci listesini kabul eder. ƒ∞≈ülevimiz, bir for d√∂ngusu kullanarak bu listeyi yineler. Belirli bir √∂ƒürenci bir "A‚" notu aldƒ±ysa, kayƒ±tlarƒ± ≈üuraya eklenir. "a_grade_students‚" listesi. Aksi takdirde hiçbir ≈üey olmaz.
Tum √∂ƒürenciler arandƒ±ktan sonra, kodumuz "A‚" notu alan √∂ƒürencilerin bir listesini yazdƒ±rƒ±r ve bu listeyi ana program.
"Python.Engineeringsƒ± hayatƒ±ma en çok ihtiyacƒ±m olduƒüu anda girdi ve ickly bir bootcamp ile e≈üle≈ümeme yardƒ±m etti. Mezun olduktan iki ay sonra, hayattaki deƒüerlerim ve hedeflerime uygun hayalimdeki i≈üi buldum!"
Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi
< p>Bir "A‚" notu alan ilk √∂ƒürenciyi almak istiyoruz. Bunu yapmak için i≈ülevimizi çaƒüƒ±rƒ±r ve ilk √∂ƒürencinin kaydƒ±nƒ± almak için dizin olu≈üturma s√∂zdizimini kullanƒ±rƒ±z:
Kodumuzu çalƒ±≈ütƒ±rƒ±n:
Kodumuz bir hata d√∂nduruyor. √ñnce i≈ülevi çaƒüƒ±rmadan "get_a_grade_students‚" i≈ülevinden bir deƒüere eri≈ümeye çalƒ±≈üƒ±yoruz.
/p>
Bu sorunu ç√∂zmek için deƒüerleri almaya çalƒ±≈ümadan √∂nce fonksiyonumuzu çaƒüƒ±rmalƒ±yƒ±z. ondan:
Önce get_a_grade_students()
fonksiyonumuzu çaƒüƒ±rƒ±yoruz ve parametre olarak √∂ƒürenci listemizi belirliyoruz. Ardƒ±ndan, get_a_grade_students()
i≈ülevinin d√∂ndurduƒüu listeden 0 dizin konumundaki kaydƒ± almak için dizin olu≈üturmayƒ± kullanƒ±rƒ±z. Son olarak, bu kaydƒ± konsola yazdƒ±rƒ±yoruz.
Kodumuzu çalƒ±≈ütƒ±ralƒ±m:
Kodumuz ilk olarak "A‚" Seviye. Ardƒ±ndan, kodumuz listedeki "A‚" Seviye. Bu durumda o √∂ƒürenci Samantha’ydƒ±.
"TypeError: ‚Äòfunction‚Äô nesnesi abone olunamaz‚" hatasƒ±, sanki i≈ülev, bir dize veya liste gibi yinelenebilir bir nesneydi.
Bu hatayƒ± ç√∂zmek için, √∂nce deƒüi≈ükeni tanƒ±mladƒ±ktan sonra bir i≈ülev bildirerek deƒüerleri depolayan deƒüi≈ükenleri geçersiz kƒ±lmadƒ±ƒüƒ±nƒ±zdan emin olun. Ardƒ±ndan, d√∂ndurduƒüu deƒüerlere eri≈ümeye çalƒ±≈ümadan √∂nce bir i≈ülevi çaƒüƒ±rdƒ±ƒüƒ±nƒ±zdan emin olun.