elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.  (Leído 1,879 veces)
EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
[Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« en: 20 Febrero 2014, 08:48 »

Gente... estoy un tanto desconcertado del por qué Python actúa de esta manera. ¿Alguien me podría decir a qué se debe?

Código
  1. SECTION_LINKS = 'LINKS'
  2. SECTION_NOTES = 'NOTES'
  3. SECTION_EXAMPLES = 'EXAMPLES'
  4. SECTION_DATA = 'DATA'
  5. SECTION_RELATED = 'RELATED'
  6. SECTION_DEFINITIONS = 'DEFINITIONS'
  7. COMMON_SECTIONS = [SECTION_LINKS, SECTION_NOTES, SECTION_EXAMPLES,\
  8. SECTION_DATA, SECTION_RELATED, SECTION_DEFINITIONS]
  9. SECTION_ALGORITHM = 'ALGORITHM'
  10. SECTION_CONTENT = 'CONTENT'
  11. # - Structure
  12. AL_STRUCTURE = COMMON_SECTIONS.append(SECTION_ALGORITHM)
  13. print(AL_STRUCTURE)
  14. DE_STRUCTURE = COMMON_SECTIONS.extend(SECTION_CONTENT)
  15. print(DE_STRUCTURE)
  16.  

En este caso, la salida de print para ambos es None.

El problema ya lo solucioné de la siguiente manera:
Código
  1. AL_STRUCTURE = [SECTION_ALGORITHM]
  2. AL_STRUCTURE.extend(COMMON_SECTIONS)
  3. DE_STRUCTURE = [SECTION_CONTENT]
  4. DE_STRUCTURE.extend(COMMON_SECTIONS)
  5.  
Y funciona... Pero mi duda es la siguiente:
¿Por qué en el primer caso AL_STRUCTURE y DE_STRUCTURE pasan a ser de tipo None?
By the way... ¿tienen una manera mas compacta y pythónica de hacer lo anterior? :P


En línea

dRak0

Desconectado Desconectado

Mensajes: 234


Ver Perfil WWW
Re: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« Respuesta #1 en: 20 Febrero 2014, 12:09 »

Estas asignando un metodo a una variable... tendrias que hacer algo asi.

COMMON_SECTIONS.append(SECTION_ALGORITHM)
AL_STRUCTURE=COMMON_SECTIONS
print AL_STRUCTURE


pd:Igual espera otra respuesta porque empeze a aprender python hace 1 semana.


« Última modificación: 20 Febrero 2014, 12:13 por __libc_start_main » En línea

EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« Respuesta #2 en: 20 Febrero 2014, 14:45 »

Estas asignando un metodo a una variable... tendrias que hacer algo asi.

COMMON_SECTIONS.append(SECTION_ALGORITHM)
AL_STRUCTURE=COMMON_SECTIONS
print AL_STRUCTURE


pd:Igual espera otra respuesta porque empeze a aprender python hace 1 semana.

El problema ya lo solucioné, de hecho lo que me estás planteando conllevaría que modifique COMMON_SECTIONS, lo cuál no quiero que suceda :P Funciona como especifiqué al final:
Código
  1. AL_STRUCTURE = [SECTION_ALGORITHM]
  2. AL_STRUCTURE.extend(COMMON_SECTIONS)
  3. DE_STRUCTURE = [SECTION_CONTENT]
  4. DE_STRUCTURE.extend(COMMON_SECTIONS)
  5.  

Lo que quería saber era por qué en el primer caso -erroneamente codificado- hace que AL_STRUCTURE y DE_STRUCTURE sean "tipo" None.  Y de paso saber si hay otra manera mas compacta y pythónica jaja

Gracias por responder :)!
« Última modificación: 20 Febrero 2014, 14:47 por EzianGES » En línea

dRak0

Desconectado Desconectado

Mensajes: 234


Ver Perfil WWW
Re: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« Respuesta #3 en: 20 Febrero 2014, 22:19 »

Por eso mismo que te puse antes . Segun tengo entendido al declarar una variable , lo que estas haciendo es asignar un objeto a un nombre.
Por ejemplo:

string="hola" Objeto tipo string
numero=2 Objeto tipo int

En este caso , estas asignando un metodo de un objeto que no retorna nada, por ende te asigna el none.

Creo que es este el motivo , puede que este equivocado ya que no poseo mucha experiencia con Python .
En línea

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« Respuesta #4 en: 21 Febrero 2014, 03:42 »

Como ya bien te dijo __libc_start_main te regresaba None porque los métodos append y extend retornan None.

La mejor forma de hacer lo que quieres sería concatenando las listas:

Código
  1. AL_STRUCTURE = [SECTION_ALGORITHM] + COMMON_SECTIONS
  2. DE_STRUCTURE = [SECTION_CONTENT] + COMMON_SECTIONS
  3. print(AL_STRUCTURE)
  4.  
  5. print(DE_STRUCTURE)

Saludos!
En línea

EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [Python] Lista vacía "None" generada a partir de otra extendida... Gran duda.
« Respuesta #5 en: 21 Febrero 2014, 21:31 »

Loco, gracias por la pronta respuesta. Se los agradezco a ambos, me sacaron una duda interesante jaja.

Pueden cerrar ya :) Les mando un abrazo y gracias nuevamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines