tipos str sentencias numeros letras imprimir entrada datos convertir python variables naming-conventions underscores metasyntactic-variable

sentencias - str en python



Subraye_como nombre de variable en Python (3)

Estás en lo correcto. En modo no interactivo _ no tiene ningún significado especial. De hecho, Norvig solo quiere transmitir que no le importa el valor de esa variable.

Offtopic: Ese artículo de Norvig es muy bueno. Una lectura recomendada.

Esta pregunta ya tiene una respuesta aquí:

Peter Norvig tiene un ensayo que describe un programa para resolver acertijos de sudoku , incluso los más difíciles, mediante la combinación de operaciones lógicas deterministas y el recorrido inteligente de las posibles soluciones. El último se hace recursivamente; aquí está esa función ( source ):

def search(values): "Using depth-first search and propagation, try all possible values." if values is False: return False ## Failed earlier if all( len( values[s]) == 1 for s in squares): return values ## Solved! ## Chose the unfilled square s with the fewest possibilities _,s = min( (len( values[s]), s) for s in squares if len(values[s]) > 1 ) return some( search( assign( values.copy(), s, d)) for d in values[s] )

(He agregado algunos espacios, CR y pestañas por el bien de mis ojos, disculpas al Dr. Norvig).

Justo debajo del comentario hay una línea que comienza con " _,s ". Esa parece ser la tupla desempaquetada ( len(values[s]),s ) con el valor mínimo de s . ¿El Dr. Norvig está usando " _ " como nombre de variable solo para indicar que es un resultado de "no me importa", o está sucediendo algo más? ¿Hay momentos en los que se recomienda " _ " como nombre de variable? En modo interactivo, " _ " contiene la respuesta de la operación anterior; ¿hay una función similar en el código no interactivo?

Actualizar

Gracias por las buenas respuestas. Supongo que La respuesta va para Alex Martelli por "valor agregado"; señala que el modismo "_, vbl_of_interest" es a menudo un efecto secundario de la expresión del DSU, que a su vez se ha vuelto en gran medida innecesaria.


Sí, _ es un nombre tradicional para "no me importa" (que desafortunadamente choca con su uso en I18N, pero eso es un problema aparte ;-). Por cierto, en el Python de hoy, en lugar de:

_,s = min( (len( values[s]), s) for s in squares if len(values[s]) > 1 )

podrías codificar

s = min((s for s in squares if len(values[s])>1), key=lambda s: len(values[s]))

(No estoy seguro de qué versión de Python Peter estaba escribiendo, pero el modismo que está usando es un ejemplo de "decorate-sort-undecorate" [[DSU]] excepto con min en lugar de ordenar, y en el Python de hoy el parámetro key= optional generalmente la mejor manera de hacer DSU ;-).


Tu interpretación es correcta Fuera del significado especial en modo interactivo _ solo se usa como un nombre de variable "no me importa", especialmente al desempaquetar.