2012-09-10 17 views
9

Mentre osservavo il codice sorgente dello asyncore module mi sono imbattuto nel metodo this. Io includo qui senza contesto, come sembra essere abbastanza autonomo:Perché assegnare una variabile locale a un valore iniziale immediatamente prima di assegnarla?

def initiate_send(self): 
    num_sent = 0 
    num_sent = dispatcher.send(self, self.out_buffer[:512]) 
    self.out_buffer = self.out_buffer[num_sent:] 

La mia domanda: Perché è num_sent primo set a 0, ma poi subito impostato di nuovo per un altro valore?

Se l'avessi trovato da nessuna parte ma nel codice sorgente di Python, direi che questa riga di codice è superflua. C'è qualche punto ad esso, o è dead code?

risposta

6

Questo è codice guasto; è una variabile locale, quindi non influenzerà mai qualcos'altro.

Se fosse stata una variabile di istanza, allora dispatcher.send potrebbe aver letto il valore durante l'esecuzione, ma qui è completamente superfluo.

Il modulo asyncore è relativamente antica, la linea è stato lì da quando è stato committed to the python codebase nel 1999.

+0

E, a parte un retabbing nel 2000, è stato invariato da allora. – nneonneo

+0

Grazie per averlo chiarito. Avevo paura di aver perso qualcosa di molto basilare su come funziona Python. :) –

Problemi correlati