I extended a method mit einem zusätzlichen String-Parameter (Durchschnitt):Unterstützung Einzelsaite und Array als einen Parameter
classification_report(y_true, y_pred, average='micro')
Ich stamme aus einer Bewertung auf:
def classification_report(y_true, y_pred, labels=None, target_names=None,
sample_weight=None, digits=2, average='weighted'):
So ist die normale Nutzung so etwas wie wäre Github schlug der Rezensent vor, auch mehrere Werte zu unterstützen: average=['micro', 'weighted', 'macro']
Was wäre angemessen Weg, um das in Python zu lösen? Ich weiß, dass der Parameter einen beliebigen Typ haben kann. Aber wie soll man mit einer Liste von Strings umgehen? Und was wäre der Typ des Parameters? Union[str, List[str]]
?
Momentan erwarte ich nur eine Schnur, die gerade ist. Aber falls ich auch eine Liste von Strings erlaube, sollte ich den Typ zuerst mit type(average)
überprüfen und dann die Werte entsprechend verarbeiten? Gibt es eine elegante Möglichkeit, die Parametervariable in einen einheitlichen Typ umzuwandeln, etwa averages=listify(average)
, der entweder einen String oder eine Liste von Strings akzeptiert und immer eine Liste von Strings zurückgibt? Hier
Persönlich würde ich bevorzugen * einfach * eine Sequenz von Strings *, und wenn Sie nur eine Option wollen, dann ist es eine Sequenz mit einem einzelnen Element. Das heißt, Sie verwenden wahrscheinlich nur 'if instance (arg, str): handle_string_arg() sonst: versuchen: für x in arg: ...' –
mit einer 'listify' Funktion würde nur schieben Sie Ihre' isinstance' überprüfen woanders . –
Verwechseln Sie auch nicht * list * -Objekte mit Arrays. –