2014-05-18 11 views
7

Ho scritto un codice Python che funziona ma a Pylint non piace la stella. Continua a dirmi:È possibile formattare una lista senza * Magic?

Used * or ** magic (star-args) 

E 'possibile scrivere il mio codice senza la stella? Alcune informazioni: sto usando lxml; self.xml è un file XML objectified.

@property 
def version_string(self): 
    '''Return the version as a string.''' 
    try: 
     version_format = self.xml.version.get("format") 
    except AttributeError: 
     return None 
    version_values = (v.text for v in self.xml.version.v) 
    return version_format.format(*version_values) 

risposta

11

Non c'è niente di sbagliato con l'operatore di splat. Senza sapere cosa fa la funzione version_format, non è possibile dire se si possa passare un iterabile o iterare direttamente la funzione, ma francamente non c'è motivo.

+6

Sono assolutamente d'accordo, non c'è niente di sbagliato nell'usare la decompressione dell'argomento per formattare le stringhe. Vorrei semplicemente [disabilitare l'avviso di PyLint] (http://stackoverflow.com/a/20639659/1599111). –

+0

'version_format' è solo una stringa. –

7

Se non ti piace quell'avvertimento di pilore, disabilitalo. È stato originariamente introdotto perché disponeva di un gran numero di

def some_function(*args, **kwargs): 
    pass 

riduce la leggibilità/manutenibilità del codice.

+0

Sembra un bug nelle loro specifiche, per catturare una chiamata splat, piuttosto che una definizione di funzione splat. – Marcin

4

star-args (W0142) non è più presente in pylint (almeno dalla versione 1.4.3). Sembra che sia stato rimosso abbastanza di recente.

Problemi correlati