Phyton – Nivel 3 – Test 2
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]