Seite 1 von 1

Seltsame Fehlermeldung

Verfasst: Montag 9. März 2015, 09:07
von Knuffi
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

Re: Seltsame Fehlermeldung

Verfasst: Montag 9. März 2015, 09:20
von 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

Re: Seltsame Fehlermeldung

Verfasst: Montag 9. März 2015, 12:23
von Knuffi
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

Re: Seltsame Fehlermeldung

Verfasst: Montag 9. März 2015, 12:31
von 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.

Re: Seltsame Fehlermeldung

Verfasst: Montag 9. März 2015, 13:00
von Kebap
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.