Seltsame Fehlermeldung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

Hallo

nach dem Aufruf von test() erhalte ich folgende Fehlermeldung
´int` object is not callable
Dieser Teil des Programmes wird um Mitternacht abgerufen. Als ich den Aufruf eben gerade an einer anderen Stelle einfügte habe, hat es sauber funktioniert.
Habe keinen Plan was da passiert ist.

Gruß
Knuffi
BlackJack

@Knuffi: Du versuchst eine ganze Zahl aufzurufen als wenn es eine Funktion oder Methode oder halt etwas „aufrufbares” wäre:

Code: Alles auswählen

In [1]: 42('answer')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-43e943b5f214> in <module>()
----> 1 42('answer')

TypeError: 'int' object is not callable
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

Hallo Moderator,
o.k ist klar, wenn ich eine Zahl aufrufe kommt diese Fehlermeldung.
Grundsätzliche Frage:
in meinem Programm rufe ich viele "Unterroutinen als def xxxx(): auf " mit xxxxx() auf, ohne Variable mit zu übergeben. Funktioniert sonst einwandfrei.
Upps habe glaube den Fehler gefunden:

Code: Alles auswählen

def test()
 print("test")
# am Anfang übergebe ich der Variabel test den Wert1
test = 1
# später rufe ich
test()
auf
ich habe die Def in test1() geändert, jetzt funktioniert es. Weiss der Geier warum.
Danke Gruß
Knuffi
BlackJack

@Knuffi: Ähm, was hattest Du denn da jetzt erwartet wenn Du den Namen Test an eine Zahl bindest und dann versuchst die aufzurufen. Funktionen sind Werte wie alles andere und an *einen* Namen kann zu jedem gegebenen Zeitpunkt innerhalb eines Namensraums nur *ein* Wert gebunden werden.

Und mal so nebenbei klingt das nach einem sehr schlechten Entwurf. Variablen haben auf Modulebene nichts zu suchen und alles was eine Funktion oder Methode benutzt was keine Konstante ist, sollte als Argument übergeben werden. Sonst hat man ganz schnell unübersichtliche Programme bei denen alle Funktionen irgendwie undurchsichtig durch globale Variablen miteinenader verwoben sind und man ganz leicht Funktionen ”kaputt” machen kann wenn man zum Beispiel so eine globale Variable für verschiedene Sachen benutzt und den Überblick verliert wann welcher Name an was für welche Funktion gebunden wird. Wie zum Beispiel hier gerade geschehen.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Knuffi hat geschrieben: ich habe die Def in test1() geändert, jetzt funktioniert es. Weiss der Geier warum.
Hallo Knuffi, wenn du in der Reihenfolge

1) Funktion test() definierst
2) test = Zahl zB 23 setzt
3) die Funktion test aufrufst

Dann wird test nicht mehr auf die Funktion zeigen, sondern auf die Zahl, und die kannst du nicht aufrufen.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten