#Tabla de contenido
- NameError: el nombre 'null' no está definido en Python
- NameError: el nombre 'json' no está definido en Python
- NameError: el nombre 'verdadero' o 'falso' no está definido en Python
#NameError: el nombre 'null' no está definido en Python
El Python "NameError: el nombre 'null' no está definido" ocurre cuando usamosnulo
en lugar deNinguno
en Python o nos olvidamos de analizar los datos JSON en Pythonobjects nativos.
Para resolver el error, reemplace cualquier ocurrencia denulo
conNinguno
en tu código.
Aquí hay un ejemplo de cómo se produce el error.
principal.py
¡Copiado!
# ⛔️ NameError: el nombre 'null' no está definidovalor=nuloimprimir(valor)
#UsarNinguno
en lugar denulo
en pitón
Para solucionar el error, tenemos que usarNinguno
en lugar denulo
en Python.
principal.py
¡Copiado!
valor= Ningunoimprimir(valor) # 👉️ Ninguno
ElNingunoEl objeto se utiliza para representar la ausencia de un valor.
Asegúrese de reemplazar todas las apariciones denulo
en tu código conNinguno
.
#Analizando una cadena JSON en un objeto Python nativo
Si tiene una cadena JSON, debe analizarla en un objeto nativo de Python antes de acceder a propiedades específicas.
principal.py
¡Copiado!
importarjsonjson_str=json.deshecho({'nombre': Ninguno})imprimir(json_str) # 👉️ '{"nombre": nulo}'imprimir(tipo(json_str)) # 👉️
# ✅ Analizar cadena JSON a objeto Python nativonative_python_obj=json.cargas(json_str)imprimir(native_python_obj) # 👉️ {'nombre': Ninguno}imprimir(tipo(native_python_obj)) # 👉️ imprimir(native_python_obj['nombre']) # 👉️ Ninguno
usamos eljson.dumpsmétodo para serializar un objeto de Python en una cadena con formato JSON.
Darse cuenta deNinguno
se conviertenulo
cuando se convierte en una cadena JSON.
#Convertir un objeto de Python en una cadena JSON
Por el contrario, puede utilizar eljson.cargasmétodo para deserializar una cadena JSON a un objeto Python nativo.
Cuando analizamos una cadena JSON en un objeto de Python,nulo
los valores se conviertenNinguno
.
Si tiene una cadena JSON en su código, puede usar eljson.loads()
método para convertirlo en un objeto de Python.
principal.py
¡Copiado!
importarjsonjson_str= r'''{"nombre": nulo, "edad": nulo}'''native_python_obj=json.cargas(json_str)imprimir(native_python_obj) # 👉️ {'nombre': ninguno, 'edad': ninguno}
Note que todosnulo
los valores se conviertenNinguno
después de analizar la cadena JSON en Python nativo.
#Declarando unnulo
variable en tu código
Alternativamente, puede declarar unnulo
variable y asignarle un valor deNinguno
.
principal.py
¡Copiado!
nulo= Ningunomi_dict= {"nombre":nulo, "edad":nulo}imprimir(mi_dict)
Sin embargo, tenga en cuenta que esta es una solución engañosa y puede resultar confusa para los lectores de su código.
#Analizando la respuesta delpeticiones
módulo
Si usas elpeticionesmódulo para realizar solicitudes HTTP, puede llamar aljson()
en el objeto de respuesta para analizar la cadena JSON en un objeto de Python nativo.
principal.py
¡Copiado!
importarpeticionesdefinitivamente hacer un pedido():resolución=peticiones.conseguir('https://reqres.in/api/usuarios',se acabó el tiempo=10) imprimir(tipo(resolución)) # 👉️
# ✅ Analizar JSON a objeto Python nativoanalizado=resolución.json() imprimir(analizado) imprimir(tipo(analizado)) # 👉️ hacer un pedido()
Elresolución
la variable es unaRespuesta
objeto que nos permite acceder a la información de la respuesta HTTP.
Podemos llamar aljson()
método en elRespuesta
objeto para analizar la cadena JSON en un objeto nativo de Python que convertiría cualquiernulo
valores a su equivalente de Python deNinguno
.
#NameError: el nombre 'json' no está definido en Python
El Python "NameError: el nombre 'json' no está definido" ocurre cuando usamos eljson
módulo sin importarlo primero.
Para solucionar el error, importe eljson
módulo antes de usarlo -importar json
.
Aquí hay un ejemplo de cómo se produce el error.
principal.py
¡Copiado!
# ⛔️ NameError: el nombre 'json' no está definidojson_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 30})
Para solucionar el error, tenemos que importar eljsonmódulo.
principal.py
¡Copiado!
# ✅ importar json primeroimportarjsonjson_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29})imprimir(json_str) # 👉️ '{"nombre": "Bobby Hadz", "edad": 29}'imprimir(tipo(json_str)) # 👉️
native_python_obj=json.cargas(json_str)imprimir(native_python_obj) # 👉️ {'nombre': 'Bobby Hadz', 'edad': 29}imprimir(tipo(native_python_obj)) # 👉️
A pesar dejson
El módulo está en la biblioteca estándar de Python, todavía tenemos que importarlo antes de usarlo.
Asegúrate de no haber usado una letra mayúsculaj
al importarjson
porque los nombres de los módulos distinguen entre mayúsculas y minúsculas.
#No importes eljson
módulo en un ámbito anidado
Además, asegúrese de no haber importadojson
en un ámbito anidado, p. Una función.
principal.py
¡Copiado!
definitivamente get_json(): importarjson json_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29}) imprimir(json_str)# ⛔️ NameError: el nombre 'json' no está definidojson_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29})
Importamos eljson
módulo en una función, por lo que no podemos usarlo fuera de la función.
Importe el módulo en el nivel superior para poder usarlo en todo su código.
principal.py
¡Copiado!
# ✅ movió la importación a la parte superior del archivoimportarjsondefinitivamente get_json():json_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29}) imprimir(json_str)json_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29})
La declaración de importación debe estar en la parte superior de su archivo, antes de cualquier línea que haga uso de lajson
módulo.
#Asegúrese de no importar eljson
módulo en una sentencia try/except
También debe importar eljson
módulo en undeclaración de prueba/excepto.
principal.py
¡Copiado!
importarjsonintentar: # 👉️ código aquí podría generar un errorjson_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29}) imprimir(json_str)exceptoImportError:json_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29})json_str=json.deshecho({'nombre': 'Bobby Hadz', 'edad': 29})
Sin embargo, el ejemplo de código funciona si el código en elintentar
declaración plantea un error, lajson
el módulo no se importará con éxito.
Esto causaría el error porque estamos tratando de acceder a las propiedades en eljson
módulo en el alcance exterior y elexcepto
bloquear.
#Importación de funciones específicas desde eljson
módulo
Una alternativa a la importación de todo eljson
módulo es importar solo las funciones y constantes que usa su código.
principal.py
¡Copiado!
dejsonimportardeshecho,cargasjson_str=deshecho({'nombre': 'Bobby Hadz', 'edad': 29})imprimir(json_str) # 👉️ '{"nombre": "Bobby Hadz", "edad": 29}'imprimir(tipo(json_str)) # 👉️
native_python_obj=cargas(json_str)imprimir(native_python_obj) # 👉️ {'nombre': 'Bobby Hadz', 'edad': 29}imprimir(tipo(native_python_obj)) # 👉️
El ejemplo muestra cómo importar sólo eldeshecho
ycargas
funciones desde eljson
módulo.
En lugar de acceder a los miembros del módulo, p.json.cargas
, ahora accedemos a ellos directamente.
Debe elegir cualquier enfoque que haga que su código sea más fácil de leer.
Por ejemplo, cuando usamos una importación comoimportar json
, es mucho más difícil ver qué funciones de lajson
módulo se están utilizando en el archivo.
Por el contrario, cuando importamos funciones específicas, es mucho más fácil ver qué funciones deljson
se está utilizando el módulo.
Sin embargo, lo más probable es que utilice sólo 2 funciones de lajson
modulo-json.dumps()
yjson.loads()
.
Eljson.dumpsLa función se utiliza para serializar un objeto de Python en una cadena con formato JSON.
Por el contrario, puede utilizar eljson.cargasfunción para deserializar una cadena JSON a un objeto nativo de Python.
Puede ver todas las funciones quejson
proporciona el módulo visitando eldocumentos oficiales.
#NameError: el nombre 'verdadero' o 'falso' no está definido en Python
El Python "NameError: el nombre 'verdadero' no está definido" ocurre cuando escribimos mal la palabra claveVerdadero
.
Para resolver el error, asegúrese de escribir en mayúscula la primera letra de la palabra clave:Verdadero
.
Aquí hay un ejemplo de cómo se produce el error.
principal.py
¡Copiado!
# ⛔️ NameError: el nombre 'verdadero' no está definido. ¿Quiso decir: 'Verdadero'?t=verdaderoimprimir(t)
También puede obtener el error cuando olvida escribir en mayúscula la letraF
enFALSO
.
principal.py
¡Copiado!
# ⛔️ NameError: el nombre 'falso' no está definido. ¿Quiso decir: 'falso'?F=FALSOimprimir(F)
#UsarVerdadero
yFALSO
en Python (primera letra mayúscula)
Para solucionar el error, tenemos que usar una mayúsculaT
al deletrear elVerdadero
palabra clave.
principal.py
¡Copiado!
t= Verdaderoimprimir(t) # Verdadero
Los nombres de variables, funciones, clases y palabras clave distinguen entre mayúsculas y minúsculas en Python.
El único otro disponiblevalor booleanoesFALSO
(capitalF
).
principal.py
¡Copiado!
t= Verdaderoimprimir(t) # 👉️ CiertoF= FALSOimprimir(F) # 👉️ Falso
Solo hay 2 valores booleanos:Verdadero
yFALSO
.
El tipo de los dos valores booleanos es
.
principal.py
¡Copiado!
imprimir(tipo(Verdadero)) # 👉️
imprimir(tipo(FALSO)) # 👉️
#Olvidarse de analizar datos JSON en objetos nativos de Python
El error también ocurre comúnmente cuando olvidamos analizar datos JSON en objetos nativePython.
Aquí hay un ejemplo de cómo se produce el error.
principal.py
¡Copiado!
# ⛔️ NameError: el nombre 'verdadero' no está definido. ¿Quiso decir: 'Verdadero'?json_str= {"está_suscrito":verdadero, "es_admin":verdadero}
Para resolver el error, reemplace cualquier ocurrencia deverdadero
conVerdadero
en tu código.
principal.py
¡Copiado!
json_str= {"está_suscrito": Verdadero, "es_admin": Verdadero}
Asegúrese de reemplazar todas las apariciones deverdadero
en tu código conVerdadero
.
Haz lo mismo paraFALSO
. Asegúrese de reemplazar todas las apariciones deFALSO
en tu código conFALSO
(primera letra mayúscula).
#Convertir una cadena JSON en un objeto de Python
Si está pegando una cadena JSON en su código de Python, enciérrela entre comillas y márquela como una cadena sin formato.
principal.py
¡Copiado!
importarjsonjson_str= r'''{"is_subscribed": true, "is_admin": true}'''# 👇️ convierte una cadena JSON en un objeto Python nativonative_python_obj=json.cargas(json_str)imprimir(native_python_obj) # 👉️ {'is_subscribed': Verdadero, 'is_admin': Verdadero}
usamos eljson.cargasmétodo para deserializar una cadena JSON a un objeto Python nativo.
Cuando analizamos una cadena JSON en un objeto de Python, todosverdadero
los valores se conviertenVerdadero
.
Alternativamente, puede declarar unverdadero
variable y asignarle un valor deVerdadero
.
principal.py
¡Copiado!
verdadero= Verdaderomi_dict= {"está_suscrito":verdadero, "es_admin":verdadero}
Sin embargo, tenga en cuenta que esta es una solución engañosa y puede resultar confusa para los lectores de su código.
#Convertir un objeto de Python en una cadena JSON
Puedes usar eljson.dumpspara serializar un objeto de Python en una cadena con formato JSON.
principal.py
¡Copiado!
importarjson# ✅ convertir objeto de Python a JSONjson_str=json.deshecho({"está_suscrito": Verdadero, "es_admin": Verdadero})imprimir(json_str) # 👉️ {"is_subscribed": verdadero, "is_admin": verdadero}imprimir(tipo(json_str)) # 👉️
# ✅ Analizar cadena JSON a objeto de Pythonnative_python_obj=json.cargas(json_str)imprimir(native_python_obj) # 👉️ {'is_subscribed': Verdadero, 'is_admin': Verdadero}imprimir(tipo(native_python_obj)) # 👉️
Darse cuenta deVerdadero
se convierteverdadero
cuando un objeto de Python se convierte en una cadena JSON.
Por el contrario, cuando analizamos la cadena JSON en un objeto Python nativo,verdadero
se convierteVerdadero
.
Objetos booleanosen Python se implementan como una subclase de enteros.
principal.py
¡Copiado!
imprimir(es instancia(Verdadero, En t)) # 👉️ Ciertoimprimir(es instancia(FALSO, En t)) # 👉️ Cierto
Convertir un valor booleano verdadero en un enterodevoluciones1
, mientras que convertirFALSO
devoluciones0
.
principal.py
¡Copiado!
imprimir(En t(Verdadero)) # 👉️ 1imprimir(En t(FALSO)) # 👉️ 0
Puedes usar elno
(negación) operador para invertir un valor booleano.
principal.py
¡Copiado!
imprimir(no Verdadero) # 👉️ Falsoimprimir(no FALSO) # 👉️ Cierto
Puede utilizar el integradobooleano()
función para convertir cualquier valor a un valor booleano.
principal.py
¡Copiado!
imprimir(bool(1)) # 👉️ Ciertoimprimir(bool('bobbyhadz.com')) # 👉️ Ciertoimprimir(bool('')) # 👉️ Falsoimprimir(bool(0)) # 👉️ Falso
Elbooleano()La función toma un valor y lo convierte en un valor booleano (Verdadero o Falso). Si el valor proporcionado es falso o se omite, entoncesbool
devolucionesFALSO
, de lo contrario vuelveVerdadero
.
Todos los valores que no son verdaderos se consideran falsos. Los valores falsos en Python son:
- constantes definidas como falsas:
Ninguno
yFALSO
. 0
(cero) de cualquier tipo numérico- secuencias y colecciones vacías:
""
(cuerda vacía),()
(tupla vacía),[]
(lista vacía),{}
(diccionario vacío),colocar()
(conjunto vacio),rango (0)
(rango vacío).
Elbooleano()
función devuelveVerdadero
si se pasa cualquier valor no falso.