Ist es möglich, eine Funktion ohne Argumente zu deklarieren, aber dann einige Argumente an diese Funktion zu übergeben, ohne eine Ausnahme auszulösen?

9

In Python ist es möglich, den obigen Code ohne eine Ausnahme zu haben?

%Vor%

Normalerweise starte ich in PHP eine Funktion ohne Parameter und lade dann die Parameter innerhalb der Funktion ab.

In der Praxis möchte ich keine Argumente in myfunc deklarieren und dann einige Argumente übergeben. Die einzige Lösung, die ich gefunden habe, ist myfunc(*arg) . Gibt es andere Methoden?

    
yuri 10.02.2010, 23:43
quelle

4 Antworten

12
%Vor%

Und um die Frage tatsächlich zu beantworten: Nein, ich glaube nicht, dass es andere Wege gibt.

Der Hauptgrund ist ziemlich einfach: C python ist stack-basiert. Für eine Funktion, die keine Parameter benötigt, wird im Stack kein Platz zugewiesen ( myFunc , stattdessen befinden sie sich an Position 0 und 1). (siehe Kommentare)

Ein weiterer Punkt ist, wie würden Sie sonst auf die Parameter zugreifen?

    
badp 10.02.2010, 23:50
quelle
12

Es gibt zwei Möglichkeiten, um Argumente in

zu übergeben

Nach Position

%Vor%

Nach Keyword

%Vor%

Und Sie können eine Kombination aus beiden verwenden

%Vor%     
John La Rooy 10.02.2010 23:48
quelle
5

Sicher kann!

Sie können Parameterlisten mit variabler Länge wie folgt definieren:

%Vor%

args ist ein Tupel Ihrer Parameter, das heißt:

%Vor%

gibt Ihnen das Tupel (1, 2) innerhalb Ihrer Funktion.

    
Dana 10.02.2010 23:47
quelle
1

Hier ist ein Funktionsdekorator, den ich geschrieben habe, um genau das zu tun, zusammen mit einem Anwendungsbeispiel:

%Vor%     
iliar 17.05.2014 13:05
quelle

Tags und Links