Python demeti ekleme

Python işlevleri ve meth

Tuple'lar parantez içine alınır. Bu kafa karıştırıcı olabilir çünkü işlev çağrıları da parantez kullanır. Bir demetten öğelere erişmek için parantez kullanırsanız veya demetleri virgülle ayırmayı unutursanız, bir “TypeError: ‘tuple’ nesne çağrılabilir değil” error.

Bu kılavuzda, bu hatanın ne anlama geldiği ve neden olduğu hakkında konuşuyoruz. Kodunuzdaki bu hatayı nasıl çözebileceğinizi anlamanıza yardımcı olmak için iki örnek üzerinden ilerliyoruz.




TypeError: ‘tuple’ nesne çağrılabilir değil

Tüpler, parantez içine alınmış bir değerler listesi olarak tanımlanır:

kahveler = ("Macchiato", "Americano", "Latte")

Parantez bir demeti bir listeden veya bir sözlükten ayırır. sırasıyla köşeli parantezler ve kaşlı ayraçlar.

Tablo nesnelerine, bir liste öğesiyle aynı şekilde erişilir. Dizin oluşturma sözdizimi, bir demetten tek bir öğe almanıza olanak tanır. Bir tanımlama grubundaki öğelere parantez kullanılarak erişilemez.

“TypeError'ın iki olası nedeni vardır: ‘tuple’ nesne çağrılabilir değil” error:

  • Her bir demeti virgülle ayırmadan bir demet listesi tanımlama
  • Yanlış indeksleme sözdizimini kullanma

Her bir nedeni ayrı ayrı inceleyelim.




Neden 1: Eksik Virgül

“TypeError: ‘tuple’ nesne çağrılabilir değil” hataya bazen yapabileceğiniz en masum hatalardan biri neden olur: eksik bir virgül.

Katılımcıların %81'i bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. 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ı.

Bilgi depolayan bir demet tanımlayın. bir kafede satılan kahvelerin listesi hakkında:

kahveler = [ ("Americano", 72, 1.90), ("Macchiato", 93, 2.10) ("Latte", 127, 2.30) ]

Her bir demetteki ilk değer bir kahvenin adıdır. İkinci değer ise dün kafede kaç tane satıldığı. Üçüncü değer kahvenin fiyatıdır.


Şimdi konsola “kahveleri” yazdıralım ki değerlerini Python kabuğumuzda görelim:

print(kahveler)

Kodumuz şunu döndürür:

Traceback (en son çağrı son): Dosya "main.py", satır 3,  ("Macchiato", 93, 2.10) TypeError: 'tuple' nesnesi callable değil

Beklediğimiz gibi bir hata döndürüldü.Çünkü kahve listemizdeki tüm demetleri virgülle ayırmayı unuttuk.

< p>Python bir değeri izleyen bir parantez kümesi gördüğünde, değeri çağrılacak bir fonksiyon olarak kabul eder.Bu durumda programımız şunu görür:

("Macchiato", 9 3, 2.10)("Latte", 127, 2.30)

Programımız (“Macchiato”, 93, 2.10) işlevini bir fonksiyon olarak çağırmaya çalışır. Bu mümkün değildir ve bu nedenle kodumuz bir hata döndürür.

Bu sorunu çözmek için, demet listemizdeki tüm değerlerin virgülle ayrıldığından emin olmamız gerekir:

kahveler = [ ("Americano", 72, 1.90), ("Macchiato", 93, 2.10), ("Latte ", 127, 2.30) ] print(kahveler)

Macchiato kahvesi hakkında bilgi depolayan demetten sonra bir virgül ekledik. Kodumuzu tekrar çalıştırmayı deneyelim:

[('Americano', 72, 1.9 ), ('Macchiato', 93, 2.1), ('Latte', 127, 2.3)]

Kodumuz, tanımlama grupları listemizi başarıyla yazdırıyor.




Neden #2: Yanlış Dizin Oluşturma Sözdizimi

Burada, bir kafede satılan kahveler hakkında bilgi depolayan bir program yazıyoruz. Programımız daha sonra her bir kahve içeceği türüyle ilgili her bir bilgiyi yazdıracaktır.

Tuple'larda saklanan kahvelerin bir listesini tanımlayarak başlayın:

kahveler = [ ("Americano", 72, 1.90), ("Macchiato", 93, 2.10), ("Latte", 127, 2.30) ]

Sonra, konsolda şu bilgileri görüntüleyen bir döngü yazın:

kahvelerdeki c için: print("Kahve Adı: " + str(c(0))) print("Sold Dün: " + str(c(1))) print("Fiyat: $" + str(c(2))))

Bu for döngüsü tüm değerlerden her değeri yazdırmalıdır. “kahvelerdeki” liste. print() ifadelerimizdeki etiketlerle birleştirebilmek için her değeri bir dizeye dönüştürürüz.

Kodumuzu çalıştırın ve ne olduğunu görün:

Traceback (en son çağrı): Dosya "main.py", satır 8,  print("Kahve Adı: " + c(0)) TypeError: "tuple" nesnesi çağrılabilir değil

Kodumuz bir hata döndürüyor.

Bu hata, kümemizdeki her öğeye küme parantezleri kullanarak erişmeye çalışmamızdan kaynaklanmaktadır. Gruplar küme parantezleri kullanılarak tanımlanırken, içerikleri geleneksel indeksleme sözdizimi kullanılarak erişilebilir hale getirilir.

Bu sorunu çözmek için, kümelerimizden değerleri almak için köşeli parantezler kullanmalıyız:

"Python.Engineeringsı hayatıma girdiğinde En çok buna ihtiyacım vardı ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Rockbot'ta Yazılım Mühendisi

< p>Kodumuzu bu yeni sözdizimi ile çalıştıralım:

Kahve Adı: Dün Americano Satıldı : 72 Fiyat: 1,9 $ Kahve Adı: Macchiato Dün Satıldı: 93 Fiyat: 2,1 $ Kahve Adı: Latte Satıldı Dün: 127 Fiyat: 2,3 $

Kodumuz her kahve hakkındaki bilgileri başarıyla yazdırıyor.


Sonuç

“TypeError: ‘tuple’nesne is not callable”hata, bir işlev olarak bir tanımlama grubu çağırmaya çalıştığınızda ortaya çıkıyor.Yanlış sözdizimi kullanırsanız bu olabilir Bir demetten bir öğeye erişmek için veya iki demeti virgülle ayırmayı unutursanız.

Bir demetten öğelere eriştiğinizde köşeli parantez kullandığınızdan emin olun. bir listede görünen kod bir ile ayrılır virgül.

Artık bu hatayı bir Python profesyoneli gibi çözmeye hazırsınız!





Python demeti ekleme: StackOverflow Questions

Tutorials