2010-10-19 28 views
22

Al leer el código fuente de Django, encuentro algunas declaraciones:¿Cuál es el significado de '_' en 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") 

Sé que establece descripción como 'Integer', pero no entiendo la sintaxis: description = _("Integer").
¿Puede alguien ayudarlo?

+0

posible duplicado de [\ _ como nombre de la variable en Python] (http://stackoverflow.com/questions/1739514/as-variable-name-in-python) –

Respuesta

6

Esto se utiliza para la función gettext, como se describe here

UTF-8 apoyo de django es bueno, por lo que django lo maneja como unicodetext como se describe here

+0

lo tengo, gracias por el mensaje de detalle! :) – Beyonder

13

No es una respuesta a su caso, pero el más general "¿Cuál es el significado de '_' en Python?":

En modo interactivo, un _ devolverá el último resultado que no se asigna a una variable

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

No estoy seguro, pero parece que cada expresión que no está asignada a una variable está actualmente asignada a _.

+4

Parece que hay otro uso de '_' en el programa python. Tales como: I_need, _, I_need_2 = ('a', 'b', 'c'); en este caso, no le importa el segundo valor en la tupla, por lo que le ahorra tiempo para pensar en algunos nombres de variables para estos valores inútiles, lo que hace que el código sea más fácil de leer. – Beyonder

+0

@Beyonder: Es cierto, pero en ese caso está actuando como cualquier otra variable, simplemente usando el nombre más olvidable posible '_' para decir" Soy una variable desechable ". –

+0

es el equivalente de Matlab de "ans"? – David

0

_ indica la última salida válida en la pantalla. El sistema almacena por defecto la salida de esta variable _. No se aplica a la cadena que se imprime utilizando la función de impresión, pero la almacena para la cadena almacenada en la variable.

enter image description here