chiama sub funzione in base al valore variabile

2

Ho una funzione che contiene altre funzioni. Queste funzioni sono chiamate in base al valore della variabile action .

Queste sottofunzioni sono raggruppate in modo logico, cioè gestiscono tutti i file.

Ogni funzione ha da 2 a 5 righe.

Mi piacerebbe migliorare lo stile.

C'è un modo più conciso per raggiungere questo scopo rispetto a quello che ho qui sotto? Mi nutro c'è un registro di definire le funzioni che contengono non molti LOC.

def my_function(action):

    return { '1': func_a, '2': func_b, '3': func_c, '4': func_d}.get(action, err)()

    def func_a():
        ...
        ...
        return ...
    def func_b():
        ...
        ...
        ...
        return ...
    def func_c():
        ...
        ...
        return ...
    def func_d():
        ...
        ...
        return ...
    def err():
        return

* discaimer: le funzioni effettive hanno nomi logici.

Il mio problema riguarda la proliferazione delle funzioni da definire

    
posta rikAtee 15.01.2013 - 16:48
fonte

1 risposta

2

Se non riesci a scomporre il codice comune in queste funzioni, è possibile che non si riduca di dimensioni, se non riesci a scomporre le caratteristiche in percorsi di caratteristiche comuni non è possibile ridurne il numero.

Ho detto che questo approccio è meraviglioso secondo me e ho usato dizionari di funzioni con ottimi risultati in passato.

Posso dare un suggerimento al tuo approccio: Non annidare tutte le funzioni all'interno della funzione di spedizione. Questo potrebbe alleviare alcuni dei tuoi dubbi sulla pulizia, forse qualcosa come:

def my_function(action):
    return { '1': func_a, '2': func_b, '3': func_c, '4': func_d}.get(action, err)()

def func_a():
    ...
    ...
    return ...
def func_b():
    ...
    ...
    ...
    return ...

Avendo funzioni separate che restituiscono le funzioni dispacciabili, è possibile spostare in modo efficace quelle funzioni ovunque siano più adatte alla gerarchia di sistema e il dispatcher le chiama semplicemente. Tuttavia, se l'approccio di nidificazione è la miglior modellazione data il tuo sistema, segui ciò che hai.

    
risposta data 15.01.2013 - 17:26
fonte

Leggi altre domande sui tag