Non sono sicuro di come procedere nella seguente situazione.
diciamo che abbiamo una funzione in questo modo:
def runsATask(codes):
myDicts = [helperFunc(code) for code in codes]
for item in myDicts:
# some logic.
Ecco il problema, i codici sono un po 'iterabili e dovrebbero essere o una lista o una tupla, cioè dovrebbe essere usato in questo modo: runsATask(['code1', 'code2', ... 'codeN'])
, ma a volte N
è 1 e quindi la gente potrebbe chiamarlo per errore, così , runsATask('code1')
Questo codice verrà comunque eseguito, ma in seguito in for loop
verrà eliminato perché myDicts
non ha gli oggetti corretti in esso, perché la comprensione di lista che lo ha fatto ha iterato su un string
anziché su a list/tuple
.
Quindi dovrei lasciarlo così com'è o sarebbe la seguente soluzione:
def runsATask(codes):
if not isinstance(codes, (list, tuple)):
raise Exception("Codes should be a list or a tuple")
myDicts = [helperFunc(code) for code in codes]
for item in myDicts:
# some logic.
Non sono sicuro di quale direzione andare perché ascolto le cerchie di Python per consentire ai chiamanti di risolvere il problema, ma il debug di una situazione come questa può essere fastidioso perché il chiamante si occuperebbe del problema nel ciclo for e aveva è stato informato in anticipo sul fatto che il parametro sbagliato è stato superato, quindi avrebbe risparmiato un sacco di tempo sprecato.