lenguaje - python tutorial
¿El guión bajo "_" es una variable incorporada en Python? (3)
¿Por qué no puedes verlo? Está en __builtins__
>>> __builtins__._ is _
True
Entonces no es global ni local. 1
¿Y dónde sucede esta tarea? sys.displayhook
:
>>> import sys
>>> help(sys.displayhook)
Help on built-in function displayhook in module sys:
displayhook(...)
displayhook(object) -> None
Print an object to sys.stdout and also save it in __builtin__.
1 2012 Editar: Yo lo llamaría "superglobal" ya que los miembros de __builtin__
están disponibles en todas partes, en cualquier módulo.
No entiendo lo que significa este subrayado único. ¿Es una variable mágica? No puedo verlo en locals () y globals ().
>>> ''abc''
''abc''
>>> len(_)
3
>>>
En el estándar Python REPL, _
representa el último valor devuelto: en el punto en el que llamó a len(_)
, _
fue el valor ''abc''
.
Por ejemplo:
>>> 10
10
>>> _
10
>>> _ + 5
15
>>> _ + 5
20
Esto es manejado por sys.displayhook
, y la variable _
va en el espacio de nombres builtins
con cosas como int
y sum
, que es la razón por la cual no se pudo encontrar en globals()
.
Tenga en cuenta que no existe tal funcionalidad dentro de los scripts de Python. En una secuencia de comandos, _
no tiene ningún significado especial y no se establecerá automáticamente en el valor producido por la instrucción anterior.
¡Además, tenga cuidado de reasignar _
en el REPL si desea usarlo como se indica arriba!
>>> _ = "underscore"
>>> 10
10
>>> _ + 5
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
_ + 5
TypeError: cannot concatenate ''str'' and ''int'' objects
Esto crea una variable global que oculta la variable _
en las incorporaciones. Para deshacer la tarea (y eliminar _
de globales), tendrás que:
>>> del _
entonces la funcionalidad volverá a ser normal (los builtins._
serán visibles de nuevo).
Por lo general, estamos usando _ en Python para enlazar una función ugettext.