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
Seltsame Fehlermeldung
@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
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:
ich habe die Def in test1() geändert, jetzt funktioniert es. Weiss der Geier warum.
Danke Gruß
Knuffi
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
Danke Gruß
Knuffi
@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.
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.
Hallo Knuffi, wenn du in der ReihenfolgeKnuffi hat geschrieben: ich habe die Def in test1() geändert, jetzt funktioniert es. Weiss der Geier warum.
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.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.