¿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_object
para inicializarlo.is
para 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
None
a 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, entoncesfound
no está consolidado.NOTA: si len (secuencia) == 0 entonces
item
no 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
raise
con unreturn None
dependiendo 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
yield
que 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 = None
que ya está asignando un valor, y si su script se ejecuta varias veces, se sobrescribeNone
cada 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
None
es 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 = None
No hace nada más que agregar una variablevar
al 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