Elimina il codice ripetitivo con le variabili? [chiuso]

1

Sto cercando di eliminare un sacco di codice ripetitivo nel mio Python e questa funzione si ripete in varie forme. Non c'è un modo più semplice per passare una variabile (usando una lista o qualcosa di simile) alla funzione "Create_me" e poi portarla a:

  1. Crea la variabile globale "var1".
  2. Prendi la variabile globale e usala al posto di "var1"

Ho provato a scrivere del codice e semplicemente non fa riferimento alle variabili corrette. Sto cercando di fare qualcosa che non può essere fatto? Si prega di vedere le 2 sezioni del codice qui sotto, la prima mostra la funzione che funziona con variabili statiche e la seconda mostra il codice che sto cercando di ottenere.

Ho anche fatto uno screenshot di ciò che è nella memoria in modo da vedere cosa sto affrontando.

Grazie in anticipo!

def CLASS_POLICY_DEF_C350():
    global var1
    var1 = defaultdict(list)
    worksheet = workbook.sheet_by_name('maps-C350')
    headers = worksheet.row(0)
    for index in range(worksheet.nrows)[1:]:
        try:
            for header, col in zip(headers, worksheet.row(index)):
                if col.value != "":
                    var1[header.value].append(col.value)
        except:
            print sys.exc_info()

def main():
    CLASS_POLICY_DEF_C350()

Il codice che ho scritto è:

#!/usr/bin/python
from collections import defaultdict
import sys,xlrd

def Create_me(test_var):
    workbook = xlrd.open_workbook("""templates.xls""")
    for dynamic_list in test_var:
        globals()[dynamic_list] = 0
        dynamic_list = defaultdict(list)
        worksheet = workbook.sheet_by_name('maps-C350')
        headers = worksheet.row(0)
        for index in range(worksheet.nrows)[1:]:
            try:
                for header, col in zip(headers, worksheet.row(index)):
                    if col.value != "":
                        dynamic_list[header.value].append(col.value)
             except:
                 print sys.exc_info()
        print 'var1 = ',var1
        print 'dynamic_list =',dynamic_list
    print '\nlocal var = ',locals()
    print '\nglobal var = ',globals()

def main():
    test_var = ('var1','var2','var3')
    Create_me(test_var)

if __name__ == "__main__":
    main()

Frankus $ ./test-var.py

local var = {'index': 1, 'header': text: u'class-map B2 ',' worksheet ':,' dynamic_list ': defaultdict (, {u'class-map A1': [u 'match A2'], u'class-map B2 ': [u' match B2 ']}),' header ': [testo: u'class-map A1', testo: u'class-map B2 '], 'test_var': ('var1', 'var2', 'var3'), 'cartella di lavoro':, 'col': text: u 'match B2'}

global var = {'defaultdict':, 'var1': 0, 'var3': 0, 'var2': 0, ' builtins ':, ' file ':' ./test-var.py ',' pacchetto ': Nessuno,' sys ':,' Create_me ':,' name ':' main ',' xlrd ':,' main ':,' doc ': None}

Frankus $

    
posta frankus 03.10.2015 - 12:28
fonte

0 risposte

Leggi altre domande sui tag