[FIXED] Gibt es eine Möglichkeit für den Benutzer, den Standardwert eines Schlüsselwortarguments für alle Funktionen, die es verwenden, global zu überschreiben?

Ausgabe

Bei der Verwendung von Pandas muss ich in vielen Funktionsaufrufen inplace=True angeben. Ich verwende das viel mehr als den Standardwert, der per Konvention tendenziell inplace=False ist, wo immer er definiert ist.

Gibt es eine Möglichkeit, eine (vielleicht globale) Variable wie z

inplace = True

und dann etwas tun, das bewirkt, dass diese Variable automatisch an jede pandas-Funktion übergeben wird, die ein ‘inplace’-Schlüsselwortargument hat, wodurch die Notwendigkeit entfällt, es jedes Mal einzugeben?

Konkret wäre das eine Ideallösung

df.set_index(['id', 'year'])

gleichwertig

df.set_index(['id', 'year'], inplace=True)

und ähnlich für jede Pandas-Funktion, die ein ‘Inplace’-Argument akzeptiert.

Dies scheint eine allgemeine Python-Frage zu sein – aber mein aktueller Kontext sind Pandas. Ich habe keine weiteren Fragen zum Thema Benutzerüberschreibung von Standardargumentwerten gefunden (außer durch die Definition einer Art Wrapper-Funktion, die eine ähnliche Menge an Eingaben zum Aufrufen erfordern würde). Soweit es darum geht, etwas auszuprobieren, habe ich keine Anhaltspunkte. Ich weiß bereits, dass das bloße Definieren einer Variablen mit diesem Namen im aufrufenden Gültigkeitsbereich den Wert nicht einem Argument innerhalb des Gültigkeitsbereichs einer Funktion zuweist.

Ich verwende Python 3.7.6 und Pandas 0.25.3, falls das wichtig ist.

Lösung

Zwei Jahre später würde ich vorschlagen, dieses Problem zu lösen, indem Sie häufig verwendete Wörter einfach kwargsin einem Wörterbuch speichern und entpacken:

kws = {'inplace': True}
df.set_index(['id', 'year'], **kws)


Beantwortet von –
Attila der Spaß


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like