Python: Funktion und Variable mit demselben Namen

7

Meine Frage ist warum ich die Funktion nicht nochmal aufrufen kann? Oder, wie man das macht?

Angenommen, ich habe diese Funktion:

%Vor%

und ich rufe es mit:

%Vor%

Ich bekomme 4.

Aber stell dir vor, dass ich eine Variable mit demselben Namen deklariere, die die Funktion (aus Versehen):

%Vor%

Nun, wenn ich es versuche:

%Vor%

oder:

%Vor%

Ich werde diesen Fehler bekommen: "TypeError: 'int' Objekt ist nicht aufrufbar"

Es ist nicht möglich, der Funktion die Variable 'a' zuzuordnen?

    
dvsaraiva 04.03.2014, 02:33
quelle

3 Antworten

13

Nachdem Sie dies getan haben:

%Vor%

a ist nicht länger eine Funktion , sondern nur eine ganze Zahl (Sie haben sie neu zugewiesen!). Natürlich wird sich der Interpreter beschweren, wenn Sie versuchen, ihn wie eine Funktion aufzurufen, weil Sie dies tun:

%Vor%

Bottom line: Sie können nicht zwei Dinge gleichzeitig mit dem gleichen Namen haben, sei es eine Funktion, ein Integer oder irgendein anderes Objekt in Python. Benutze einfach einen anderen Namen.

    
Óscar López 04.03.2014, 02:35
quelle
5

'Namen' in Python sind normalerweise Bezeichner für einen bestimmten Typ. mehr wie das Benennen einer Box, die eine Variable / Funktion / Methode oder irgendein Objekt in Python speichert. Wenn Sie neu zuweisen, benennen Sie nur eine Box um.

Sie können das herausfinden, indem Sie das Folgende tun.

anfänglich a wird an Position 140515915925784 ein Wert 9 zugewiesen. Sobald ich denselben Bezeichner für eine Funktion verwende, verweist a jetzt auf ein Feld, das die Adresse dieser Funktion enthält (4512942512)

erneut Zuweisen von a zu 3 zeigt a, um auf eine andere Adresse zu verweisen.

%Vor%     
durga 04.03.2014 02:59
quelle
3

Sie weisen einer Funktionsdefinition den Namen a zu und weisen sie dann einer Ganzzahl zu.

Es ist syntaktisch korrekt, aber es ist nicht das, was Sie wollen.

Am besten geben Sie Funktionen semantische Namen, die beschreiben, was Sie tun, mit den Argumenten, die an sie übergeben werden, und Variablen semantische Namen zu geben, die beschreiben, auf welches Objekt sie zeigen. Wenn Sie das tun, haben Sie mehr lesbaren Code und Sie werden diesen Fehler sicherlich nicht noch einmal machen.

    
Aaron Hall 04.03.2014 02:35
quelle

Tags und Links