Domanda

ho cercato al passaggio di array o liste, come Python tende a chiamarli, in una funzione.

ho letto qualcosa su come utilizzare args *, come ad esempio:

def someFunc(*args)
    for x in args
        print x

Ma non so se questo è giusto / sbagliato. Nulla sembra funzionare come voglio. Sono abituato a essere in grado di passare le matrici in funzione PHP con facilità e questo mi è confusa. Sembra anche che non posso fare questo:

def someFunc(*args, someString)

Come si solleva un errore.

Credo di aver appena ricevuto me stesso completamente confuso e in cerca di qualcuno per cancellare in su per me.

È stato utile?

Soluzione

Quando si definisce la funzione utilizzando la seguente sintassi:

def someFunc(*args)
    for x in args
        print x

Stai dicendo che che ci si aspetta un numero variabile di argomenti. Se si desidera passare a un elenco (Array da altre lingue) ci si fa qualcosa di simile a questo:

def someFunc(myList = [], *args)
    for x in myList:
        print x

Poi si può chiamare con questo:

items = [1,2,3,4,5]

someFunc(items)

È necessario definire argomenti con nome prima di argomenti variabili, e gli argomenti variabili prima di argomenti a parola chiave. Si può anche avere questo:

def someFunc(arg1, arg2, arg3, *args, **kwargs)
    for x in args
        print x

Il che richiede almeno tre argomenti, e supporti un numero variabile di altri argomenti e argomenti a parola chiave.

Altri suggerimenti

È possibile passare le liste, proprio come gli altri tipi:

l = [1,2,3]

def stuff(a):
   for x in a:
      print a


stuff(l)

Questa stampa la lista l. Tenete a mente liste sono passati come riferimenti non come una copia profonda.

liste Python (che non sono solo le matrici perché la loro dimensione può essere modificato al volo) sono normali oggetti Python e possono essere passati a funzioni come qualsiasi variabile. La sintassi * viene utilizzato per la decompressione liste, che probabilmente non è qualcosa che si desidera fare ora.

Non è necessario utilizzare l'asterisco per accettare una lista.

È sufficiente dare l'argomento un nome nella definizione, e passare in una lista come

def takes_list(a_list):
    for item in a_list:
         print item
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top