¿Es posible declarar una variable en Python, así ?:
var
para que se inicialice a Ninguno? Parece que Python lo permite, pero tan pronto como accedes a él, se bloquea. es posible? Si no, ¿por qué?
EDITAR: Quiero hacer esto para casos como este:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Duplicar
- Valor no inicializado en python (por el mismo autor)
- ¿Hay alguna palabra clave de declaración en Python? (por el mismo autor)
Relacionado
python
variable-assignment
variable-declaration
Joan Venge
fuente
fuente

Respuestas:
¿Por qué no solo hacer esto?
Python es dinámico, por lo que no necesita declarar cosas; existen automáticamente en el primer ámbito donde se asignan. Por lo tanto, todo lo que necesita es una declaración de asignación anterior normal como se indicó anteriormente.
Esto es bueno, porque nunca terminarás con una variable no inicializada. Pero tenga cuidado: esto no significa que no terminará con variables inicializadas incorrectamente . Si inicias algo
None, asegúrate de que eso es lo que realmente quieres y asigna algo más significativo si puedes.fuente
Recomiendo encarecidamente que lea Otros idiomas tienen "variables" (lo agregué como un enlace relacionado): en dos minutos sabrá que Python tiene "nombres", no "variables".
fuente
val = val or any_objectpara inicializarlo.ispara probar si un valor esNone.En Python 3.6+ puedes usar anotaciones variables para esto:
https://www.python.org/dev/peps/pep-0526/#abstract
PEP 484 introdujo sugerencias de tipo, también conocidas como anotaciones de tipo. Si bien su enfoque principal eran las anotaciones de función, también introdujo la noción de comentarios de tipo para anotar variables:
PEP 526 tiene como objetivo agregar sintaxis a Python para anotar los tipos de variables (incluidas las variables de clase y las variables de instancia), en lugar de expresarlas a través de comentarios:
Parece estar más directamente en línea con lo que estaba preguntando "¿Es posible declarar una variable solo sin asignar ningún valor en Python?"
fuente
No estoy seguro de lo que estás tratando de hacer. Python es un lenguaje muy dinámico; generalmente no necesita declarar variables hasta que realmente las va a asignar o usar. Creo que lo que quieres hacer es simplemente
que asignará el valor
Nonea la variablefoo.EDITAR: Lo que realmente parece querer hacer es solo esto:
Es un poco difícil saber si ese es realmente el estilo correcto para usar en un ejemplo de código tan corto, pero es una forma de trabajo más "pitónica".
EDITAR: a continuación hay un comentario de JFS (publicado aquí para mostrar el código)
Sin relación con la pregunta del OP, pero el código anterior se puede reescribir como:
NOTA: si
some_condition()genera una excepción, entoncesfoundno está consolidado.NOTA: si len (secuencia) == 0 entonces
itemno está consolidado.El código anterior no es aconsejable. Su propósito es ilustrar cómo funcionan las variables locales, es decir, si la "variable" está "definida" podría determinarse solo en tiempo de ejecución en este caso. Forma preferible:
O
fuente
Normalmente inicializo la variable a algo que denota el tipo como
o
Si va a ser un objeto, no lo inicialice hasta que lo instancia:
fuente
Bueno, si desea verificar si una variable está definida o no, ¿por qué no verificar si está en los arrays locals () o globals ()? Su código reescrito:
Si está buscando una variable local, reemplace globals () con locales ().
fuente
Primero que nada, mi respuesta a la pregunta que originalmente hiciste
P: ¿Cómo descubro si una variable está definida en un punto de mi código?
R: Lea en el archivo fuente hasta que vea una línea donde se define esa variable.
Pero además, ha dado un ejemplo de código de que hay varias permutaciones que son bastante pitónicas. Buscas una forma de escanear una secuencia para buscar elementos que coincidan con una condición, así que aquí hay algunas soluciones:
Claramente en este ejemplo podría reemplazar el
raisecon unreturn Nonedependiendo de lo que quería lograr.Si desea todo lo que coincide con la condición, puede hacer esto:
Hay otra forma de hacer esto con la
yieldque no me molestaré en mostrarte, porque es bastante complicado en la forma en que funciona.Además, hay una forma de una línea de lograr esto:
fuente
Si entiendo bien su ejemplo, no necesita hacer referencia al 'valor' en la declaración if de todos modos. Estás saliendo del círculo tan pronto como se pueda establecer en cualquier cosa.
fuente
Parece que estás tratando de escribir C en Python. Si desea encontrar algo en una secuencia, Python tiene funciones integradas para hacer eso, como
fuente
Es una buena pregunta y desafortunadamente respuestas malas ya
var = Noneque ya está asignando un valor, y si su script se ejecuta varias veces, se sobrescribeNonecada vez.No es lo mismo que definir sin asignación. Todavía estoy tratando de descubrir cómo evitar este problema.
fuente
¿Es posible declarar una variable en Python (var = None):
fuente
fuente
Si
Nonees un valor de datos válido, entonces necesita la variable de otra manera. Podrías usar:Este centinela es sugerido por Nick Coghlan .
fuente
Puede engañar a un intérprete con este feo oneliner.
if None: var = NoneNo hace nada más que agregar una variablevaral diccionario de variables locales, no inicializarlo. El intérprete lanzará la excepción UnboundLocalError si intenta usar esta variable en una función después. Esto también funcionaría para versiones muy antiguas de python. No es simple ni hermoso, pero no esperes mucho de Python.fuente