Prima di tutto, la mia risposta alla domanda che hai inizialmente posto
D: Come posso scoprire se una variabile è definita in un punto del mio codice?
A: Leggi nel file sorgente fino a quando vedi una riga in cui è definita quella variabile.
Inoltre, hai fornito un esempio di codice secondo cui ci sono varie permutazioni che sono piuttosto pitoniche. Stai cercando un modo per scansionare una sequenza per elementi che corrispondono a una condizione, quindi ecco alcune soluzioni:
def findFirstMatch(sequence):
for value in sequence:
if matchCondition(value):
return value
raise LookupError("Could not find match in sequence")
Chiaramente in questo esempio è possibile sostituire il raisecon un a return Noneseconda di ciò che si desidera ottenere.
Se volessi tutto ciò che corrispondeva alla condizione, potresti farlo:
def findAllMatches(sequence):
matches = []
for value in sequence:
if matchCondition(value):
matches.append(value)
return matches
C'è un altro modo di farlo con yieldquello che non mi preoccuperò di mostrarti, perché è abbastanza complicato nel modo in cui funziona.
Inoltre, esiste un modo unico per raggiungere questo obiettivo:
all_matches = [value for value in sequence if matchCondition(value)]