no devuelve ninguna Python

Funciones y métodos de Python

El método Python append () devuelve un valor None. Esto se debe a que agregar un elemento a una lista actualiza una lista existente. No crea uno nuevo.

Si intenta asignar el resultado del método append () a una variable, encuentra un & ldquo; TypeError: & lsquo; NoneType & rsquo; el objeto no tiene atributo & lsquo; agregar & rsquo; & rdquo; error.

En esta guía, hablamos sobre lo que significa este error, por qué se genera y cómo puede resolverlo, con referencia a un ejemplo.




TypeError : & lsquo; NoneType & rsquo; el objeto no tiene atributo & lsquo; append & rsquo;

En Python, es una convención que los métodos que cambian secuencias devuelven None. La razón de esto es que devolver una nueva copia de la lista sería subóptimo desde una perspectiva de rendimiento cuando la lista existente simplemente se puede cambiar.

Porque append () no crea una nueva lista, está claro que el método mutará una lista existente. Esto evita que agregue un elemento a una lista existente por accidente.

Un error común que cometen los codificadores es asignar el resultado del método append () a un nuevo lista. Esto no funciona porque append () cambia una lista existente.  append () no genera una nueva lista a la que pueda asignar una variable.




Un escenario de ejemplo

A continuación, construimos un programa que permite un bibliotecario agrega un libro a una lista de registros . Esta lista de registros contiene información sobre el autor de un libro y cuántas copias están disponibles.

Comencemos por definir una lista de libros:

81% de los participantes afirmaron que se sentían más seguros de sus perspectivas laborales tecnológicas después de asistir a un campamento de entrenamiento. Asigne a un bootcamp hoy mismo.

El graduado promedio de un bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

La lista de libros contiene un diccionario . Un diccionario almacena información sobre un libro específico. & Nbsp; Agregamos un registro a esta lista de libros:

 libros = libros.append ({"título ":" Crepúsculo "," disponible ": 2}) 

Nuestros & ldquo; libros & rdquo; La lista ahora contiene dos registros. A continuación, pedimos al usuario información sobre un libro que desea agregar a la lista:

 title = input (" Ingrese el título del libro: ") available = input (" Ingrese cuántas copias del libro están disponibles: ") 

Ahora que tenemos esta información, podemos proceder a agregar un registro a nuestra lista de libros. Podemos hacer esto usando el método append ():

 books = books.append ({" title ": title," available ": int (available)}) 

Hemos añadido un nuevo diccionario a los & ldquo; libros & rdquo; lista. Hemos convertido el valor de & ldquo; disponible & rdquo; a un número entero en nuestro diccionario. Asignamos el resultado del método append () a los & ldquo; libros & rdquo;  variable . Finalmente, imprimimos la nueva lista de libros en la consola:

 print (books) 

Ejecutemos nuestro código y veamos qué sucede:

 Ingrese el título del libro: Orgullo y prejuicio Ingrese cuántas copias del libro están disponibles: 5 Traceback (última llamada más reciente): Archivo "main.py", línea 12, en & lt; módulo & gt; books = books.append (AttributeError: El objeto 'NoneType' no tiene atributo' append' 

Nuestro código nos pide que ingresemos información sobre un libro. Cuando nuestro código intenta agregar el libro a nuestra lista de libros, se devuelve un error.





La solución

Nuestro código devuelve un error porque hemos asignado el resultado de un código append () método a una variable. Eche un vistazo al código que agrega Crepúsculo a nuestra lista de libros:

Este código cambia el valor de & ldquo; libros & rdquo; al valor devuelto por el método append () . append () devuelve un valor None. Esto significa que & ldquo; libros & rdquo; se vuelve igual a None.

Cuando intentamos agregar el libro sobre el que un usuario ha escrito en la consola a la lista "libros", nuestro código devuelve un error. "Libros" es igual a Ninguno y no se puede agregar un valor al valor Ninguno.

Para solucionar este error, tenemos que eliminar el operador de asignación de todos los lugares donde usamos el método append () :

 books.append ({" title ":" Twilight "," available ": 2}) & hellip; books.append ({"title": title, "available": int (available)}) 

Hemos eliminado los & ldquo; books = & rdquo; declaración de cada una de estas líneas de código. Cuando usamos el método append () , se agrega un diccionario a los libros. No asignamos el valor de "libros" al valor que devuelve append () .

Ejecutemos nuestro código nuevamente:

 Ingrese el título del libro: Orgullo y prejuicio Ingrese cuántas copias del libro están disponibles: 5 [{' title': 'The Great Gatsby',' available ': 3}, {' title': 'Crepúsculo',' disponible': 2}, {'título':' Orgullo y prejuicio', 'disponible': 5}] 

Nuestro código agrega correctamente una entrada de diccionario para el libro Orgullo y prejuicio a nuestra lista de libros.




Conclusión

El & ldquo; TypeError: & lsquo; NoneType & rsquo; el objeto no tiene atributo & lsquo; agregar & rsquo; & rdquo; se devuelve un error cuando utiliza el operador de asignación con el método append () .

Para resolver este error, asegúrese de no intentar asignar el resultado del append () método a una lista. El método append () agrega un elemento a una lista existente. El método devuelve None, no una copia de una lista existente.


¡Ahora está listo para resolver este problema común de Python como un profesional!





no devuelve ninguna Python: StackOverflow Questions