2015-09-22 19 views
7

Che cosa significa il codice * nel seguente codice (trovato nella libreria pprint)?Cosa significa una stella * da sola in una dichiarazione di funzione?

def pformat(object, indent=1, width=80, depth=None, *, compact=False): 
    """Format a Python object into a pretty-printed representation.""" 
    return PrettyPrinter(indent=indent, width=width, depth=depth, 
         compact=compact).pformat(object) 

Se era *args allora sarebbe un numero arbitrario di parametri posizionali. I valori dei parametri si trovano nella tupla denominata args. I primi 4 parametri possono essere assegnati per nome o per posizione, il parametro compact può essere assegnato solo per nome ...

Bene, NO! Perché non è d'accordo con the documentation:

In una chiamata di funzione, argomenti a parola chiave devono seguire posizionali argomenti.

Quindi, cosa fa la stella dopo e prima di altri argomenti con nome? E come è usato? O perché è lì se non viene utilizzato?

risposta

10

Separa gli argomenti posizionali da keyword-only arguments quando non ci sono argomenti variabili. Questa è una funzionalità solo per Python-3.

+0

Grazie. Nella domanda ho fatto riferimento alla pagina di documentazione di Python 2, ma la frase citata si trova anche nel 3. – stenci

Problemi correlati