In cPython 2.4:
%Vor%aber:
%Vor%Natürlich verstehe ich wirklich Pythons Funktionsargument-Verarbeitungsmechanismus nicht. Wer möchte etwas Licht dazu bringen? Ich sehe was passiert (so etwas wie das Füllen von Argument-Slots, dann gebe ich auf), aber ich denke, das würde einen Neuling verderben.
(auch wenn Leute bessere Frage-Keywords haben - so etwas wie "Eingeweide" - bitte wiederholen)
Wenn Sie sagen
%Vor% Sie sagen Python, dass f
4 positional Argumente benötigt. Jedes Mal, wenn Sie f
aufrufen, müssen genau 4 Argumente angegeben werden, und der erste Wert wird a
, der zweite Wert b
usw. zugewiesen.
Sie dürfen f
mit etwas wie
f(1,2,3,4)
oder f(a=1,b=2,c=3,d=4)
oder sogar f(c=3,b=2,a=1,d=4)
aber in jedem Fall müssen genau 4 Argumente angegeben werden.
f(b=1,c=1,d=1)
gibt einen Fehler zurück, da für a
kein Wert angegeben wurde. (0 gegeben)
f(a=1,b=1,c=1)
gibt einen Fehler zurück, da für d
kein Wert angegeben wurde. (3 gegeben)
Die Anzahl der angegebenen Argumente gibt an, wie weit Python gekommen ist, bevor ein Fehler erkannt wird.
Übrigens, wenn Sie
sagen %Vor% Dann sagen Sie Python, dass f
4 optionale Argumente benötigt. Wenn ein bestimmter Arg nicht angegeben wird, wird der Standardwert automatisch für Sie bereitgestellt. Dann könntest du mit dem Aufruf von
f(a=1,b=1,c=1)
oder f(b=1,c=1,d=1)
Es ist theoretisch möglich, den resultierenden TypeError mit etwas klarerem und informativem zu umhüllen. Es gibt jedoch viele kleine Details, von denen ich einige nicht zu lösen weiß.
HINWEIS: Der folgende Code ist ein kaum funktionierendes Beispiel, keine vollständige Lösung.
%Vor%