2010-10-19 16 views
22

Quando si legge il codice sorgente di Django, trovo alcune dichiarazioni:Qual è il significato di "_" in python?

class Field(object): 
    """Base class for all field types""" 
    __metaclass__ = LegacyConnection 

    # Generic field type description, usually overriden by subclasses 
    def _description(self): 
     return _(u'Field of type: %(field_type)s') % { 
      'field_type': self.__class__.__name__ 
     }  
    description = property(_description) 

class AutoField(Field): 
    description = _("Integer") 

So che impostato descrizione come 'Integer', ma non capisco la sintassi: description = _("Integer").
Qualcuno può esserci d'aiuto?

+0

possibile duplicato di [\ _ come nome della variabile in Python] (http://stackoverflow.com/questions/1739514/as-variable-name-in-python) –

risposta

6

questo viene utilizzato per la funzione gettext, come descritto here

supporto UTF-8 di django è buono, quindi django lo gestisce come un unicodext come descritto here

+0

capito, grazie per il messaggio di dettaglio! :) – Beyonder

13

Non è una risposta al vostro caso, ma la più generale "Qual è il significato di '_' in Python?":

In modalità interattiva, un _ restituirà l'ultimo risultato che non è stato assegnato a una variabile

>>> 1 # _ = 1 
1 
>>> _ # _ = _ 
1 
>>> a = 2 
>>> _ 
1 
>>> a # _ = a 
2 
>>> _ # _ = _ 
2 
>>> list((3,)) # _ = list((3,)) 
[3] 
>>> _ # _ = _ 
[3] 

Non sicuro, ma sembra che ogni espressione non assegnata a una variabile venga effettivamente assegnata a _.

+4

Sembra che ci sia un altro uso di "_" nel programma python. Ad esempio: I_need, _, I_need_2 = ('a', 'b', 'c'); in questo caso, non ti interessa il secondo valore nella tupla, quindi risparmia tempo a pensare a nomi di variabili per questi valori inutili che rendono il codice più facile da leggere. – Beyonder

+0

@Beyonder: Vero, ma in quell'istanza si comporta come qualsiasi altra variabile, usando solo il nome più dimenticabile possibile '_' per dire" Sono una variabile usa e getta ". –

+0

è l'equivalente di Matlab di "ans"? – David

0

_ indica l'ultima uscita valida sullo schermo. Sistema per impostazione predefinita memorizza la copia dell'output su questa variabile _. Non si applica alla stringa che viene stampata usando la funzione di stampa ma io memorizzo per la stringa memorizzata nella variabile.

enter image description here