Come definire una funzione in Python?

Condividere su Facebook
Condividere su twitter
Condividere su linkato
Condividere su telegramma
Condividere su WhatsApp

Contenuti

Una funzione è un blocco di codice riutilizzabile che può eseguire un'attività di base. La definizione della funzione in Python potrebbe essere leggermente diversa dalla sintassi utilizzata in linguaggi come C, C ++ su Java. L'obiettivo di questo post è fornire la sintassi per definire le funzioni in Python.

La definizione della funzione inizia con a def parola chiave seguita dal nome della funzione e dagli argomenti che la funzione può assumere. Questi argomenti sono tra parentesi e può esserci un numero qualsiasi di argomenti, compreso lo zero. Quando c'è più di un argomento, sono separati da una virgola. Poiché Python è un linguaggio di tipo impreciso (il che significa che non assegniamo un tipo di dati a una variabile quando viene dichiarata), Non dovremmo includere tipi di dati per gli argomenti. La dichiarazione di definizione della funzione termina con i due punti. e pitone, definiamo una funzione nel modo successivo:

def function_name(arg1,arg2,arg3,...):
    """
    la logica delle funzioni va qui.
    """
    valore restituito1, valore2, valore3,...

Di seguito è riportata una semplice funzione,

def saluto():
    Stampa("Salve, mondo")

Questa è una funzione di base che stampa “Salve, mondo"Alla console.

Sanguinamento

Se guardiamo da vicino la definizione della funzione, vediamo che non ci sono tasti intorno al corpo della funzione. e pitone, il corpo della funzione è identificato dal livello di indentazione. Dal momento che non usiamo le parentesi graffe per indicare il corpo della funzione, il rientro è utile all'interprete Python per sapere quale parte del codice imposta la logica della funzione. Se non abbiamo un rientro della logica della funzione relativa alla dichiarazione della funzione, un Errore di indentazione verrà generato e la funzione non verrà interpretata.

def divertente(nome):
Stampa("Ciao" + nome)

La funzione sopra non verrà compilata e restituirà a Errore di indentazione.

Valori di ritorno

Una funzione può restituire un valore nel qual caso viene suggerita all'interprete tramite il Ritorno dichiarazione. A differenza di C, C ++ su Java, una funzione Python può restituire più valori. Se non includiamo una dichiarazione di restituzione, il controllo verrà trasferito automaticamente al codice chiamante senza restituire alcun valore. Un valore predefinito di Nessuno verrà restituito se non vi è alcuna dichiarazione di reso. Allo stesso modo delle altre lingue, Una funzione può contenere al massimo una dichiarazione di ritorno.

def aggiungi(un, B):
    Torna a + b
def hello():
    Stampa("Salve, mondo")
res = aggiungi(5,7) #res avrà un valore di 12.
res = ciao() #res avrà un valore di Nessuno.

Argomenti predefiniti

È possibile determinare i valori predefiniti per gli argomenti nella definizione della funzione. Per questo usiamo la seguente sintassi. Si noti che gli argomenti predefiniti devono trovarsi sul lato destro dell'elenco degli argomenti. In altre parole, Un argomento predefinito deve essere visualizzato solo dopo tutti gli argomenti non predefiniti.

def areaOfCircle(raggio, pi=3,14):
    restituisci pi * raggio * raggio

Qui la funzione accetta un argomento pi predefinito che viene impostato sul lato destro dell'elenco degli argomenti. Se definiamo l'argomento predefinito a sinistra di un argomento non predefinito, otteniamo un Errore di sintassi.

Funzioni di chiamata

Ora che abbiamo definito le funzioni, vediamo come possiamo chiamarli nel nostro codice. Per chiamare una funzione usiamo il nome della funzione insieme agli argomenti che sono stati utilizzati per impostare la funzione. Il numero di argomenti deve corrispondere esattamente al numero di argomenti presenti nella definizione della funzione. Qualsiasi differenza nel numero di argomenti solleverà il Errore di digitazione.

def areaOfCircle(raggio, pi=3,14):
    restituisci pi * raggio * radius
#function call
print(areaDicerchio(5))
#Si noti che all'argomento predefinito non viene passato un valore.
#Stampe 78.5 sullo schermo.

Overload delle funzionalità

Programmatori con esperienza in C ++ o Java avrebbe spesso funzioni sovraccaricate. L'overload di funzioni non funziona in Python perché se definiamo una funzione due o più volte variando il numero di argomenti, L'ultimo set di funzioni sostituirà le definizioni precedenti. Se la funzione con il numero specificato di argomenti nella chiamata di funzione non esiste nemmeno, otteniamo un Errore di digitazione. Come esempio,

def aggiungi(un, B):
    Torna a + b
def add(un, B, C):
    Torna a + B + c
print(Inserisci(1,2)) #genera un oggetto TypeError che richiede un altro argomento.
Stampa(Inserisci(1,2,3)) #Stampe 6 sulla console.

Passaggio di funzioni come argomenti

Possiamo passare una funzione in sé come argomento a una funzione diversa. Supponiamo di voler applicare una funzione specifica a una matrice di numeri. Invece di impostare una funzione e chiamarla utilizzando un ciclo for, potremmo semplicemente usare la funzione mappa. La funzione map è una potente funzione incorporata che accetta una funzione e una raccolta di elementi come argomenti e applica la funzione di input all'intera raccolta di elementi e restituisce gli elementi elaborati.

def quadrato(io):
    ritorno i * i 
res = list(carta geografica(quadrato, [1,2,3])) 
#res ora contiene [1,4,9]. Abbiamo ottenuto i risultati senza nemmeno scorrere l'elenco

* argomenti e ** kwargs

A proposito di argomenti, Esistono alcuni tipi speciali di argomenti. È possibile che programmatori esperti abbiano utilizzato questo argomento in C e C ++. Python offre anche queste funzionalità. Se non sappiamo quanti argomenti riceverà una funzione durante il runtime, possiamo usare * args per ricevere tali argomenti nella definizione della funzione. Inoltre possiamo ottenere un sovraccarico di funzioni utilizzando * args anche se non è tecnicamente un sovraccarico di funzioni poiché non stiamo definendo più funzioni con lo stesso nome di funzione.

def aggiungi(*args):
    somma = 0
    for arg in args:
        sum += arg
    return sum
add(1,2,3) #rendiconto 6
Inserisci(1,2,3,4) #rendiconto 10

Se vogliamo ricevere argomenti denominati, possiamo usare ** kwargs.

def divertente(**kwargs):
    per chiave in kwargs:
        Stampa(chiave, kwargs[chiave])
Divertimento(a=1,b=2,c=3)
#prints 
#a 1
#B 2
#C 3

Argomenti della riga di comando

Qualsiasi codice a livello di produzione utilizzerebbe un tipo speciale di argomento. Si tratta di argomenti della riga di comando utilizzati dalla funzione principale. e pitone, questi argomenti verranno passati alla funzione __main__. Possiamo ottenerli facilmente analizzando la variabile sys.argv. Poiché l'analisi di una stringa della riga di comando è un'attività comune, abbiamo biblioteche per farlo per noi, come litigare.

Come impostare le "funzioni anonime"’

Le funzioni anonime sono funzioni senza nome. Sono anche conosciuti come lambda funzioni. Ma aspetta! Se una funzione non ha nome, Come lo chiamerai?? Questi sono chiamati dove sono definiti. Non vengono utilizzati più avanti nel codice per la maggior parte del tempo. Queste funzioni sono funzioni speciali che vengono utilizzate quando è necessario passare una funzione stessa come argomento. Questo caso si verifica più spesso quando vogliamo fare qualche tipo di elaborazione dei dati con panda o qualsiasi altra libreria. La funzione può essere così piccola da non meritare un nome proprio. Queste funzioni sono definite con la parola chiave lambda.

elenco(carta geografica(lambda x: x*x, [1,2,3]))
#stampa i valori [1,4,9]

Abbiamo calcolato i quadrati della lista di input senza nemmeno impostare una funzione. Cosa stiamo facendo con la dichiarazione lambda x: X * X è che stiamo definendo una funzione anonima, In altre parole, innominato, e la chiamiamo subito. Supponiamo di voler utilizzare la funzione lambda in un secondo momento, possiamo memorizzarlo in una variabile funzione e usarlo.

quadrato = lambda x: x*x
list(carta geografica(quadrato, [1,2,3]))
#stampa i valori [1,4,9]

La variabile quadrato memorizza la funzione in numeri quadrati e la utilizzeremo in un secondo momento quando vogliamo calcolare i quadrati dei numeri in una lista. Quando si stabiliscono le funzioni lambda dobbiamo prestare attenzione ai seguenti punti:

  1. Nessuna dichiarazione di restituzione.
  2. Gli argomenti non sono racchiusi tra parentesi.
  3. Nessuna rientranza.
  4. Più argomenti sono separati da una virgola
  5. Queste funzioni sono definite su una singola riga.

conclusione

Questo post conciso ha menzionato i passaggi per impostare una funzione e ha spiegato i componenti di una funzione. La definizione della funzione in Python può sembrare molto diversa rispetto a C, C ++ o Java senza chiavi, tipi di ritorno, eccetera. Ma una volta compresa la struttura della funzione, diventa più facile scrivere funzioni più complicate.

Circa l'autore

Sono uno sviluppatore Python che lavoro in una multinazionale IT da più di tre anni. Possono contattarmi tramite Gmail.

Il supporto mostrato in questo post non è di proprietà di Analytics Vidhya e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.