In Python, è' Normalmente usiamo solo un lambda per funzioni molto brevi e semplici che si adattano facilmente alla linea che le sta creando. (Alcune lingue hanno altre opinioni.)
Come suggerito da @DSM nel loro commento, lambda è essenzialmente una scorciatoia per creare funzioni quando non vale la pena dare loro un nome.
Se stai facendo cose più complesse, o se devi dare al codice un nome per riferimento futuro, un'espressione lambda non sarà molto più una scorciatoia per te - invece, potresti anche def
ine una semplice vecchia funzione.
Così, invece di assegnare l'espressione lambda ad una variabile:
y = lambda u: u**(-2) + 8
È possibile definire la variabile per essere una funzione:
def y(u):
return u**(-2) + 8
che ti dà spazio per spiegare un po ', o essere più complesso, o qualunque cosa tu abbia bisogno di fare:
def y(u):
"""
Bloopinate the input
u should be a positive integer for fastest results.
"""
offset = 8
bloop = u ** (-2)
return bloop + offset
Funzioni e lambda sono entrambi "callabl" e ", il che significa che sono essenzialmente intercambiabili per quanto riguarda lo scipy.integrate.quad()
.
Per combinare le calle, è possibile utilizzare diverse tecniche.
def triple(x):
return x * 3
def square(x):
return x * x
def triple_square(x):
return triple(square(x))
def triple_plus_square(x):
return triple(x) + square(x)
def triple_plus_square_with_explaining_variables(x):
tripled = triple(x)
squared = square(x)
return tripled + squared
ci sono opzioni più avanzate che vorrei prendere in considerazione solo se si rende il codice più chiaro (che probabilmente non sarà).Ad esempio, è possibile inserire i callable in un elenco:
all_the_things_i_want_to_do = [triple, square]
Una volta che sono in una lista, è possibile utilizzare le operazioni basati su elenco di lavorare su di essi (tra cui la loro applicazione a sua volta reduce
la lista a un singolo valore).
Ma se il codice è come la maggior parte del codice, le funzioni regolari che si chiamano semplicemente per nome sono le più semplici da scrivere e più facili da leggere.
Non ho familiarità con 'scipy.integrate.quad', ma' f = lambda u: y (u) + x (u) 'sarebbe un modo per aggiungere le due funzioni insieme. –
A parte: perché stai usando 'lambda' affatto se hai intenzione di dare un nome alle tue funzioni immediatamente comunque? – DSM
Onestamente sto usando lambda perché non conosco altre opzioni con la mia esperienza di Python molto limitata, motivo per cui ho aggiunto l'ultima parte alla domanda. – coffeepls