Phyton – Nivel 3 – Test 2

Phyton – Nivel 3 – Test 2

Test-2 Phyton Nivel 3

¿Qué es el método mágico call en Python?

¿Cuál es la diferencia principal entre .sort() y sorted() en Python?

¿Qué es el módulo asyncio en Python?

Observa el siguiente código:


import threading

def print_numbers():
        for i in range(5):
               print(i)

threads = [threading.Thread(target=print_numbers) for _ in range(3)]
for thread in threads:
        thread.start()

¿Qué describe mejor la salida probable de este código?


¿Qué hace la función zip() en Python?

¿Qué es una expresión walrus (:=) en Python 3.8+?

Considera el siguiente código:


class Meta(type):
        def __new__(cls, name, bases, dct):
                 x = super().__new__(cls, name, bases, dct)
                 x.attr = 100
                 return x

class MyClass(metaclass=Meta):
        pass

print(MyClass.attr)

¿Cuál será la salida?

Considera el siguiente código:



def outer(x):
       def inner(y):
             return x + y
       return inner

f = outer(10)
print(f(5))

¿Cuál será la salida?

¿Qué es un descriptor en Python?

¿Qué es una función de orden superior en Python?

Tests similares

Respuestas:

1. ¿Qué es una función de orden superior en Python?

Respuesta: Una función que toma otra función como argumento o devuelve una función

Explicación:
Una función de orden superior es aquella que trabaja con otras funciones como datos. Puede recibir funciones como argumentos, devolverlas como resultado, o ambas. Ejemplo:

def aplicar_funcion(f, x):

    return f(x)

def cuadrado(n):

    return n * n

print(aplicar_funcion(cuadrado, 5))  # Salida: 25


2. Observa el código sobre hilos:

import threading

def print_numbers():

    for i in range(5):

        print(i)

threads = [threading.Thread(target=print_numbers) for _ in range(3)]

for thread in threads:

    thread.start()

Respuesta: Los números del 0 al 4 impresos en un orden impredecible, posiblemente entremezclados

Explicación:
El módulo threading permite ejecutar múltiples hilos concurrentemente. Sin sincronización explícita (como join()), los hilos pueden entremezclar su salida, ya que corren simultáneamente.


3. ¿Qué es una expresión walrus (:=) en Python 3.8+?

Respuesta: Un operador de asignación que permite asignar valores dentro de expresiones

Explicación:
El operador := (apodado «walrus») asigna un valor a una variable dentro de una expresión. Esto es útil en bucles y condicionales. Ejemplo:

if (n := len([1, 2, 3, 4])) > 3:

    print(f»La lista tiene {n} elementos»)  # Salida: La lista tiene 4 elementos


4. ¿Qué es el módulo asyncio en Python?

Respuesta: Un módulo para programación asíncrona y concurrencia

Explicación:
asyncio facilita la ejecución de código de manera asíncrona, permitiendo que se manejen múltiples tareas sin bloquear el programa. Ejemplo:

import asyncio

async def saludo():

    print(«Hola»)

    await asyncio.sleep(1)

    print(«Adiós»)

asyncio.run(saludo())


5. ¿Cuál será la salida?

def outer(x):

    def inner(y):

        return x + y

    return inner

f = outer(10)

print(f(5))

Respuesta: 15

Explicación:
outer devuelve la función inner, que recuerda el valor de x (closure). Al llamar a f(5), se calcula 10 + 5.


6. ¿Qué es el método mágico __call__ en Python?

Respuesta: Un método que permite que una instancia de clase sea llamada como una función

Explicación:
El método __call__ permite que un objeto sea invocado como si fuera una función. Ejemplo:

class Llamable:

    def __call__(self, x):

        return x * 2

obj = Llamable()

print(obj(3))  # Salida: 6


7. ¿Qué hace la función zip() en Python?

Respuesta: Combina dos o más iterables en una secuencia de tuplas

Explicación:
La función zip() toma múltiples iterables y devuelve un iterador de tuplas donde cada tupla contiene elementos de las mismas posiciones de los iterables. Ejemplo:

a = [1, 2, 3]

b = [‘a’, ‘b’, ‘c’]

print(list(zip(a, b)))  # Salida: [(1, ‘a’), (2, ‘b’), (3, ‘c’)]


8. Observa el siguiente código sobre metaclases:

class Meta(type):

    def __new__(cls, name, bases, dct):

        x = super().__new__(cls, name, bases, dct)

        x.attr = 100

        return x

class MyClass(metaclass=Meta):

    pass

print(MyClass.attr)

Respuesta: 100

Explicación:
El código utiliza una metaclase (Meta) para agregar el atributo attr con el valor 100 a la clase MyClass. Este atributo es accesible directamente desde la clase.


9. ¿Qué es un descriptor en Python?

Respuesta: Un objeto que define los métodos __get__, __set__ o __delete__

Explicación:
Los descriptores controlan cómo se accede a los atributos de una clase. Se usan, por ejemplo, en propiedades y métodos estáticos. Ejemplo:

class Descriptor:

    def __get__(self, instance, owner):

        return «Acceso controlado»

class MiClase:

    atributo = Descriptor()

obj = MiClase()

print(obj.atributo)  # Salida: Acceso controlado


10. ¿Cuál es la diferencia principal entre .sort() y sorted() en Python?

Respuesta: .sort() modifica la lista original, sorted() devuelve una nueva lista ordenada

Explicación:

  • .sort() ordena la lista en el lugar y solo funciona con listas.
  • sorted() crea una nueva lista ordenada a partir de cualquier iterable, sin modificar el original. Ejemplo:

lista = [3, 1, 2]

print(sorted(lista))  # Salida: [1, 2, 3]

print(lista)          # Salida: [3, 1, 2]

lista.sort()

print(lista)          # Salida: [1, 2, 3]

Deja un comentario