python listeye uygulama işlevi

Python işlevleri ve meth

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 önünde bulundurun:

grades = ["A", "A", "B"] print(grades[0])

0 dizin konumundaki değer A'dır. Böylece kodumuz “A” döndürür. Bu sözdizimi bir işlev üzerinde ç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öndürme 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. Bugün 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özlük tanımlayarak başlıyoruz:

student = { "name": "Holly", "latest_test_score": "B", "class": "Altıncı Sınıf" }

Sözlüğümüzde üç anahtar ve üç 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:

def öğrenci(öğrenci): print("Ad: " + öğrenci["isim"]) print("Son Test Puanı: " + öğrenci["son_test_skoru"]) print ("Sınıf: " + öğrenci["sınıf"])

Kodumuz, “pupil” sözlüğündeki üç değeri konsola yazdırır. “pupil” sözlüğü geçirilir Student() işlevine bir argüman olarak.

İşlevimizi çağıralım ve “student” ; parametre olarak sözlük:

student(student)

Python kodumuz bir hata veriyor:

Bu hatanın nedeni şudur: çünkü bir fonksiyonumuz ve aynı ada sahip bir yinelenebilirimiz var. “öğrenci” önce bir sözlük olarak ilan edilir. Daha sonra aynı isimde bir fonksiyon tanımlıyoruz. Bu, “öğrenci” sözlükten ziyade bir fonksiyon.

“student” Student() fonksiyonuna bir parametre olarak, “student” isimli fonksiyonu geçiyoruz.

Bu sorunu öğrenci fonksiyonumuzu yeniden adlandırarak çözüyoruz:

def show_student_details(pupil): print("Ad: " + öğrenci["isim"]) print("Son Test Puanı: " + öğrenci["latest_test_score"]) print("Sınıf: " + öğrenci["sınıf"]) show_student_details(student)

Fonksiyonumuzu “show_student_details” olarak yeniden adlandırdık. Kodumuzu çalıştıralım ve ne olduğunu görelim:

Ad: Holly Son Test Puanı: B Sınıfı: Altıncı Grade

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:

students = [ { "name": " Holly", "derece": "B" }, { "ad": "Samantha", "derece": "A" }, { "ad": "Ian", "derece": "A" } ]

Öğrenci listemizde üç sözlük bulunmaktadır. Her sözlük, bir öğrencinin adını ve en son testlerinde aldıkları notu içerir.


Sonra, A notu alan öğrencilerin listesini döndüren bir işlev tanımlayın:

def get_a_grade_students(pupils): a_grade_students = [] öğrencilerde p için: if p["grade"] == "A": a_grade_students.append(p) print(a_grade_students) a_grade_students döndür

İşlev, “öğrenciler” adlı bir öğrenci listesini kabul eder. İşlevimiz, bir for döngüsü 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.

Tüm öğ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 Mühendisi

< 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:

first = get_a_grade_students[0] print(first)

Kodumuzu çalıştırın:

İzleme (en son çağrı son): Dosya "main.py", satır 16,  ilk = get_a_grade_students[0] TypeError : 'function' nesnesi abone olunamaz

Kodumuz bir hata döndürüyor. Ö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:

a_grades = get_a_grade_students(students) first = a_grades[0] print(first)

Önce get_a_grade_students() fonksiyonumuzu çağırıyoruz ve parametre olarak öğrenci listemizi belirliyoruz. Ardından, get_a_grade_students() işlevinin döndürdüğü 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:

[{'ad': 'Samantha', 'derece': 'A'}, {'ad': 'Ian', 'derece': 'A'}] {'isim': 'Samantha' , 'grade': 'A'}

Kodumuz ilk olarak “A” Seviye. Ardından, kodumuz listedeki “A” Seviye. Bu durumda o öğrenci Samantha'ydı.





Sonuç

“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öndürdüğü değerlere erişmeye çalışmadan önce bir işlevi çağırdığınızdan emin olun.

Artık bu yaygın Python hatasını profesyonel kodlayıcı!





python listeye uygulama işlevi: StackOverflow Questions

Tutorials