Salida del programa Python | conjunto 5

Prediga la salida de los siguientes programas: 

Programa 1: 

Python3

def gfgFunction():
    "Geeksforgeeks is cool website for boosting up technical skills"
    return 1
 
print (gfgFunction.__doc__[17:21])

Producción:

cool

Explicación: hay una string de documentos definida para este método, al colocar una string en la primera línea después del inicio de la definición de la función. Se puede hacer referencia a la string de documentos usando el atributo __doc__ de la función. Y por lo tanto, imprime la string indexada. 

Programa 2: 

Python3

class A(object):
    val = 1
 
class B(A):
    pass
 
class C(A):
    pass
 
print (A.val, B.val, C.val)
B.val = 2
print (A.val, B.val, C.val)
A.val = 3
print (A.val, B.val, C.val)

Producción:

1 1 1
1 2 1
3 2 3

Explicación: en Python, las variables de clase se manejan internamente como diccionarios. Si no se encuentra un nombre de variable en el diccionario de la clase actual, se busca en la jerarquía de clases (es decir, sus clases principales) hasta que se encuentra el nombre de la variable a la que se hace referencia; si no se encuentra la variable, se arroja un error. Entonces, en el programa anterior, la primera llamada a print() imprime el valor inicializado, es decir, 1. En la segunda llamada, ya que B. val está configurado en 2, la salida es 1 2 1. La última salida 3 2 3 puede ser sorprendente . En lugar de 3 3 3, aquí B.val refleja 2 en lugar de 3, ya que se anula antes.

 Programa 3: 

Python3

check1 = ['Learn', 'Quiz', 'Practice', 'Contribute']
check2 = check1
check3 = check1[:]
 
check2[0] = 'Code'
check3[1] = 'Mcq'
 
count = 0
for c in (check1, check2, check3):
    if c[0] == 'Code':
        count += 1
    if c[1] == 'Mcq':
        count += 10
 
print (count)

Producción:

12

Explicación: Al asignar cheque1 a cheque2, creamos una segunda referencia a la misma lista. Los cambios en check2 afectan check1. Al asignar la porción de todos los elementos en check1 a check3, estamos creando una copia completa de check1 que se puede modificar de forma independiente (es decir, cualquier cambio en check3 no afectará check1). Por lo tanto, al verificar check1, el ‘Código’ coincide y el recuento aumenta a 1, pero Mcq no coincide, ya que solo está disponible en check3. Ahora, al verificar check2 aquí, también se hace coincidir ‘Código’, lo que da como resultado un valor de conteo de 2. Finalmente, al verificar check3, que está separado de check1 y check2 aquí, solo Mcq coincide y el conteo se convierte en 12. 

Programa 4: 

Python3

def gfg(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
 
gfg(2)
gfg(3,[3,2,1])
gfg(3)

Producción:

[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]

Explicación: La primera llamada a la función debería ser bastante obvia, el ciclo agrega 0 y luego 1 a la lista vacía, l. l es un nombre para una variable que apunta a una lista almacenada en la memoria. La segunda llamada comienza creando una nueva lista en un nuevo bloque de memoria. Luego me refiero a esta nueva lista. Luego agrega 0, 1 y 4 a esta nueva lista. Eso es genial. La tercera llamada de función es la extraña. Utiliza la lista original almacenada en el bloque de memoria original. Es por eso que comienza con 0 y 1. Este artículo es una contribución de Harsh Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.orgo envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *