Lecciones en español / PCEP / Hoja de repaso · English
Hoja de repaso de PCEP PCEP-30-02
Dominio 1: Computer programming and Python fundamentals (18%)
Consejos para el examen
- Las preguntas del examen a menudo preguntan qué tipo de error produce un fragmento. Los paréntesis faltantes, la mala indentación o las palabras clave mal colocadas son errores de sintaxis que se detectan antes de la ejecución; el código válido que hace algo imposible es un error en tiempo de ejecución (semántico) que se detecta solo cuando se ejecuta esa línea.
- Recuerda que True, False y None son palabras clave con mayúscula inicial; true en minúsculas es solo un nombre no definido. Recuerda también que un # dentro de comillas no es un comentario.
- Fíjate en el punto decimal y en la e: 5 es int, 5.0 y 5. son float, 5e0 es float. Y "5" entre comillas es un str, sin importar cómo se vea.
- El prefijo octal es cero más la letra o (0o), no dos ceros, y un cero inicial simple como 017 es un SyntaxError en Python 3. Recuerda que bin(), oct() y hex() devuelven cadenas.
- Que algo sea legal y que siga la convención son preguntas distintas. Las preguntas del examen pueden pedirte qué nombres son inválidos (empiezan con dígito, tienen guion medio, espacio o son palabra clave) frente a cuáles rompen PEP 8 pero igual funcionan (por ejemplo, MyVariable para una variable).
- Dos trampas clásicas: / siempre devuelve un float, y // redondea hacia menos infinito, así que -7 // 2 es -4. Revisa dos veces cada pregunta de división entera o módulo con negativos.
- Espera una pregunta donde se suma un número a una cadena. "3" + 4 es un TypeError, "3" * 4 es "3333", y x *= 2 + 1 multiplica por 3, porque primero se evalúa todo el lado derecho.
- Memoriza las dos excepciones: ** se asocia de derecha a izquierda, y ** le gana a un menos unario a su izquierda. Todo lo demás en el mismo nivel se ejecuta de izquierda a derecha, así que % * // / se aplican estrictamente en orden de lectura.
- La ruta más rápida para las preguntas con ~ es la fórmula ~x = -x - 1. Para & | ^, convierte siempre a binario y alinea las columnas; adivinar a partir de los valores decimales es donde ocurren los errores.
- Si un fragmento del examen compara sumas de floats con ==, sospecha que el resultado es False. Si llama a round() con un valor .5, recuerda el redondeo de la mitad al par: round(2.5) es 2 y round(3.5) es 4.
- int() nunca redondea; trunca hacia cero y rechaza las cadenas que contienen un punto decimal. bool() de cualquier cadena no vacía, incluso "0" o "False", es True.
- Cuando una pregunta use input(), asume que es una cadena hasta que veas int() o float(). Con print(), cuenta los separadores con cuidado: sep aparece solo entre argumentos, y end aparece una vez, al final de todo.
Términos clave
- Source code (código fuente)
- El texto del programa, legible por humanos, que escribes; en Python se guarda como un archivo .py de texto plano.
- Compiler (compilador)
- Un programa que traduce todo el código fuente a código máquina por adelantado, produciendo un ejecutable separado.
- Interpreter (intérprete)
- Un programa que lee y ejecuta el código fuente cada vez que se ejecuta, instrucción por instrucción; CPython es el intérprete de referencia de Python.
- Lexis (léxico)
- El vocabulario de un lenguaje: las palabras y símbolos válidos que reconoce.
- Syntax (sintaxis)
- Las reglas gramaticales para combinar los elementos léxicos en instrucciones válidas.
- Semantics (semántica)
- Las reglas que deciden si una instrucción bien formada tiene sentido y qué significa.
- Keyword (palabra clave)
- Una palabra reservada con significado fijo, como if, for o def, que no puede usarse como identificador.
- Block (bloque, suite)
- El grupo de instrucciones indentadas que pertenece a una línea de encabezado que termina en dos puntos.
- Comment (comentario)
- Texto después de # hasta el final de la línea, que el intérprete ignora.
- IndentationError
- La subclase de SyntaxError que se lanza cuando la indentación falta, es inesperada o es inconsistente.
- Literal
- Un valor escrito directamente en el código fuente, cuya forma determina su tipo.
- Scientific notation (notación científica)
- Notación de float que usa e o E para una potencia de diez, como en 6.02e23; siempre produce un float.
- bool
- El tipo booleano con los valores True y False, una subclase de int donde True equivale a 1 y False a 0.
- str
- El tipo de texto de Python, escrito entre comillas simples, dobles o triples.
- 0b prefix (prefijo 0b)
- Marca un literal entero binario (base 2), que usa solo los dígitos 0 y 1.
- 0o prefix (prefijo 0o)
- Marca un literal entero octal (base 8), que usa los dígitos del 0 al 7.
- 0x prefix (prefijo 0x)
- Marca un literal entero hexadecimal (base 16), que usa del 0 al 9 y de la A a la F.
- bin(), oct(), hex()
- Funciones integradas que devuelven una representación en cadena de un entero en base 2, 8 o 16, con prefijo.
- Variable
- Un nombre vinculado a un valor mediante asignación; el valor, no el nombre, es el que tiene un tipo.
- Identifier (identificador)
- Cualquier nombre que creas; debe usar letras, dígitos y guiones bajos, y no debe empezar con un dígito ni ser una palabra clave.
- PEP 8
- La guía de estilo oficial de Python, que recomienda snake_case para variables y funciones y UPPER_CASE para constantes.
- Shadowing a built-in (ocultar una función integrada)
- Asignar un valor a un nombre integrado como list o str, lo que oculta la función original en ese ámbito.
- True division (/) (división real)
- División que siempre devuelve un float, incluso para resultados exactos como 4 / 2 = 2.0.
- Floor division (//) (división entera)
- División redondeada hacia abajo, hacia menos infinito; int con dos ints, float en otro caso.
- Modulo (%) (módulo)
- El resto que acompaña a la división entera; en Python toma el signo del divisor.
- Exponentiation (**) (exponenciación)
- Eleva el operando izquierdo a la potencia del operando derecho.
- Concatenation (concatenación)
- Unir dos cadenas con +, lo que produce una cadena nueva.
- Replication (replicación)
- Repetir una cadena (o lista) con * y un número entero de veces.
- Compound assignment (asignación compuesta)
- Un operador como += o //= que aplica una operación y vuelve a vincular la variable al resultado.
- Chained assignment (asignación encadenada)
- Vincular varios nombres a un mismo valor en una sola instrucción, como en a = b = 0.
- Priority (precedence) (prioridad, precedencia)
- La regla que decide qué operadores se aplican primero en una expresión.
- Binding (associativity) (asociatividad)
- El orden en que se aplican los operadores de igual prioridad, normalmente de izquierda a derecha.
- Right-to-left binding (asociatividad de derecha a izquierda)
- El comportamiento de **, de modo que a ** b ** c significa a ** (b ** c).
- Unary operator (operador unario)
- Un operador con un solo operando, como -x, +x o ~x.
- Bitwise AND (&) (AND a nivel de bits)
- Produce 1 en cada posición de bit donde ambos operandos tienen 1.
- Bitwise XOR (^) (XOR a nivel de bits)
- Produce 1 en cada posición de bit donde los operandos son diferentes.
- Bitwise NOT (~) (NOT a nivel de bits)
- Invierte todos los bits; para los ints de Python, ~x es igual a -x - 1.
- Shift (<< >>) (desplazamiento)
- Mueve los bits a la izquierda o a la derecha, multiplicando o haciendo división entera por potencias de dos.
- Relational operator (operador relacional)
- Un operador como ==, != o <= que compara dos valores y devuelve True o False.
- Chained comparison (comparación encadenada)
- Una expresión como 0 <= x < 5, equivalente a dos comparaciones unidas por and.
- Floating-point error (error de punto flotante)
- La pequeña imprecisión causada por almacenar fracciones decimales en binario, como en 0.1 + 0.2.
- Banker's rounding (redondeo bancario)
- La regla de round() de enviar las mitades exactas al entero par más cercano.
- Type casting (conversión de tipos)
- Convertir explícitamente un valor a otro tipo con una función como int() o str().
- Truncation (truncamiento)
- Descartar la parte fraccionaria hacia cero, como hace int() con los floats.
- Truthiness (veracidad)
- La regla que usa bool(): el cero, lo vacío y None son False; todo lo demás es True.
- ValueError
- Se lanza cuando una función de conversión recibe el tipo correcto pero un valor inutilizable, como int("3.7").
- sep=
- Argumento de palabra clave de print() que indica la cadena insertada entre los argumentos; por defecto es un solo espacio.
- end=
- Argumento de palabra clave de print() que indica la cadena impresa después del último argumento; por defecto es un salto de línea.
- input()
- Función integrada que lee una línea del usuario y siempre la devuelve como cadena.
- Prompt (mensaje de aviso)
- La cadena opcional que se pasa a input() y se muestra antes de que el usuario escriba.
Dominio 2: Control flow: conditional blocks and loops (29%)
Consejos para el examen
- Cuenta cuántas ramas pueden ejecutarse. Una cadena if-elif-else ejecuta exactamente un bloque (o ninguno si no hay else); una pila de ifs separados puede ejecutar varios. Esa sola distinción responde muchas preguntas de salida del PCEP.
- Cuando el examen imprime el resultado de and u or, no respondas True o False en automático. and devuelve el primer operando falsy (o el último); or devuelve el primer operando truthy (o el último).
- Alinea else y elif con su if usando la columna de indentación, no el orden en que aparecen. Las mismas palabras con otra indentación producen un programa diferente.
- pass no salta ni termina nada; el código que le sigue en el mismo bloque sí se ejecuta. Si una opción de respuesta trata a pass como continue, es incorrecta.
- Cuenta con cuidado: la condición de un bucle while se comprueba una vez más de las que se ejecuta el cuerpo. Fíjate también en las condiciones con != que un incremento puede saltarse.
- El valor de stop nunca se incluye, y un rango que no puede moverse de start hacia stop en la dirección del paso está vacío; no es un error.
- Cambiar la variable del bucle nunca cambia la secuencia. Si una pregunta hace for x in lst: x += 1 y luego imprime lst, la lista no ha cambiado.
- break nunca salta fuera de dos bucles. Cuando una pregunta con bucles anidados usa break, solo se detiene el bucle interior; sigue contando las iteraciones del bucle exterior.
- Lee el else después de un bucle como "si no hubo break". Un bucle vacío igual ejecuta su else, y continue no lo impide.
- Si el rango interior usa la variable exterior, nunca multipliques; anota la cantidad interior para cada valor exterior y súmalas.
- Después de for i in range(n), i vale n - 1; después de un bucle while que cuenta, el contador suele valer n. Después de un bucle for vacío, la variable no cambia o no está definida.
Términos clave
- if statement (instrucción if)
- Ejecuta su bloque indentado solo cuando su condición es verdadera.
- elif
- Una condición adicional que se prueba solo si todas las condiciones anteriores de la misma instrucción fueron falsas.
- else
- La rama que se ejecuta cuando ninguna condición if o elif anterior fue verdadera; no lleva condición.
- Overlapping conditions (condiciones superpuestas)
- Condiciones que pueden ser verdaderas al mismo tiempo, lo que hace que el orden de las ramas elif sea importante.
- Truthy (verdadero en contexto booleano)
- Cualquier valor que cuenta como verdadero en una condición, como los números distintos de cero y las colecciones no vacías.
- Falsy (falso en contexto booleano)
- Un valor que cuenta como falso: False, None, el cero y las cadenas o colecciones vacías.
- Short-circuit evaluation (evaluación en cortocircuito)
- and y or dejan de evaluar en cuanto se conoce el resultado.
- Logical operator (operador lógico)
- and, or o not, usados para combinar o invertir condiciones.
- Nested conditional (condicional anidada)
- Una instrucción if dentro del bloque de otra rama condicional.
- Indentation level (nivel de indentación)
- La columna en la que empieza una línea; define a qué bloque pertenece la línea.
- Dangling else (else colgante)
- La pregunta de a qué if pertenece un else; en Python, al que está a la misma indentación.
- pass
- Una instrucción (palabra clave) que no hace nada, usada donde la sintaxis requiere una instrucción.
- Stub (esqueleto)
- Una función o bloque de relleno, a menudo con cuerpo pass, que se completará más adelante.
- Empty block error (error de bloque vacío)
- IndentationError: expected an indented block, que se lanza cuando un encabezado con dos puntos no tiene cuerpo.
- while loop (bucle while)
- Un bucle que repite su cuerpo mientras su condición sea verdadera, comprobándola antes de cada iteración.
- Iteration (iteración)
- Una ejecución del cuerpo de un bucle.
- Infinite loop (bucle infinito)
- Un bucle cuya condición nunca se vuelve falsa, así que se ejecuta hasta que se interrumpe o se sale de él con break.
- KeyboardInterrupt
- La excepción que se lanza cuando el usuario presiona Ctrl+C, usada para detener un programa descontrolado.
- range()
- Función integrada que produce enteros desde start hasta stop sin incluirlo, avanzando de step en step.
- Step (paso)
- La cantidad que se suma cada vez; los pasos negativos cuentan hacia abajo y 0 no está permitido.
- Empty range (rango vacío)
- Un rango que no produce valores, como range(5, 2), así que un bucle sobre él se ejecuta cero veces.
- Loop variable (variable del bucle)
- El nombre que toma cada valor sucesivo en un bucle for.
- Iterable
- Un objeto cuyos elementos se pueden tomar uno a la vez, como una cadena, lista, tupla, dict o range.
- enumerate()
- Función integrada que produce pares (índice, elemento) mientras se itera.
- Accumulator (acumulador)
- Una variable que se prepara antes de un bucle y se actualiza en cada iteración para construir un total o un resultado.
- break
- Sale de inmediato del bucle más interno que lo contiene.
- continue
- Salta el resto de la iteración actual y empieza la siguiente del bucle más interno.
- Flag variable (variable bandera)
- Un booleano que se asigna dentro de un bucle para señalar un evento, como found = True, y que se comprueba después para detener un bucle exterior.
- Loop else clause (cláusula else de un bucle)
- Un bloque después de un bucle for o while que se ejecuta solo si el bucle terminó sin break.
- Normal termination (terminación normal)
- Un bucle que termina porque su condición se volvió falsa o porque se acabaron sus elementos.
- Search loop (bucle de búsqueda)
- Un bucle que busca un elemento y hace break cuando lo encuentra, a menudo acompañado de else para el caso de no encontrado.
- Nested loop (bucle anidado)
- Un bucle colocado dentro del cuerpo de otro bucle; el bucle interior se completa por entero en cada iteración exterior.
- Outer loop (bucle exterior)
- El bucle que contiene al otro, y que controla cuántas veces se inicia el bucle interior.
- Iteration count (número de iteraciones)
- El total de veces que se ejecuta el cuerpo de un bucle, que se obtiene multiplicando o sumando por cada pasada exterior.
- Loop variable scope (ámbito de la variable del bucle)
- En Python, la variable de un bucle for sigue definida después del bucle, con su último valor.
- Last assigned value (último valor asignado)
- Para range(n), la variable del bucle termina en n - 1, no en n.
- NameError
- Se lanza si usas una variable de bucle que nunca se asignó porque el bucle se ejecutó cero veces.
Dominio 3: Data collections: tuples, dictionaries, lists and strings (25%)
Consejos para el examen
- Los índices fuera de rango lanzan IndexError, pero las rebanadas fuera de rango devuelven en silencio lo que existe, posiblemente una lista vacía. Una rebanada de un solo elemento sigue siendo una lista.
- Los métodos que modifican una lista en el lugar (append, insert, remove, sort, reverse) devuelven None. Si una respuesta imprime el resultado de x.sort(), imprime None.
- Un if al final filtra (menos elementos, no se permite else); un if-else al principio transforma (mismo número de elementos, else obligatorio). Recuerda también que in no busca dentro de listas anidadas.
- b = a nunca copia una lista. Si una pregunta muta b después de esa línea, a también cambia. Las rebanadas, list() y copy() crean listas exteriores nuevas, pero las listas anidadas dentro siguen siendo compartidas.
- grid[1][2] es la fila 1, columna 2, ambas contadas desde 0. Y [[0] * 3] * 3 crea tres referencias a una sola fila, así que una sola asignación aparece en todas las filas.
- La coma, no los paréntesis, es la que crea una tupla. (7) es un int, (7,) es una tupla, y 7, también es una tupla. Cualquier intento de asignar a t[i] lanza TypeError.
- d[key] con una clave inexistente lanza KeyError; d.get(key) devuelve None. Asignar d[key] = value nunca falla: agrega si es nueva y reemplaza si ya existe.
- in sobre un diccionario comprueba las claves, no los valores. Recorrer un diccionario da las claves; usa items() para obtener ambas partes a la vez.
- Las mayúsculas se ordenan antes que las minúsculas, y las cadenas de dígitos se comparan como texto, así que "100" < "20" es True. Cualquier intento de asignar a s[i] es un TypeError.
- Cada secuencia de escape cuenta como un carácter al medir la longitud. Una cadena que termina en una sola barra invertida es un error de sintaxis porque la barra invertida escapa la comilla de cierre.
- Los métodos de cadena devuelven cadenas nuevas; la original nunca cambia. find() devuelve -1 en lugar de fallar, y join() se llama sobre el separador, no sobre la lista.
Términos clave
- List (lista)
- Una secuencia ordenada y mutable escrita entre corchetes.
- Index (índice)
- La posición de un elemento, empezando en 0; los índices negativos cuentan desde el final, siendo -1 el último.
- Slice (rebanada)
- Una sublista tomada con [start:stop:step], que incluye start y excluye stop.
- IndexError
- Se lanza cuando un índice está fuera del rango válido de una secuencia.
- append()
- Agrega un elemento al final de una lista, en el lugar.
- insert(i, x)
- Inserta x antes de la posición i, desplazando a la derecha los elementos posteriores.
- remove(x) vs del
- remove elimina el primer valor que coincide; del elimina por índice o rebanada.
- sort() vs sorted()
- sort() ordena la lista en el lugar y devuelve None; sorted() devuelve una lista nueva ordenada.
- in / not in
- Operadores de pertenencia que comprueban si un valor es (o no es) un elemento de una secuencia.
- List comprehension (lista por comprensión)
- Una expresión como [x * 2 for x in data] que construye una lista nueva a partir de un iterable.
- Filter clause (cláusula de filtro)
- El if final de una comprensión, que incluye solo los elementos que cumplen la condición.
- Alias
- Un segundo nombre vinculado al mismo objeto, creado con una asignación simple como b = a.
- Shallow copy (copia superficial)
- Una lista exterior nueva cuyos elementos son los mismos objetos que los de la original, creada con a[:], list(a) o a.copy().
- is vs ==
- is comprueba si dos nombres se refieren al mismo objeto; == comprueba si sus valores son iguales.
- Mutation (mutación)
- Cambiar un objeto en el lugar, lo cual es visible a través de todos sus alias.
- Nested list (lista anidada)
- Una lista que contiene otras listas como elementos.
- Matrix (matriz)
- Una cuadrícula rectangular de valores, representada en Python como una lista de listas-fila de igual longitud.
- Double indexing (doble indexación)
- grid[r][c]: el primer índice elige la fila, el segundo elige el elemento en esa fila.
- Shared-row trap (trampa de filas compartidas)
- [[0] * n] * m repite m veces una misma lista interior, así que todas las filas cambian juntas.
- Tuple (tupla)
- Una secuencia ordenada e inmutable, creada con comas y normalmente con paréntesis.
- One-item tuple (tupla de un elemento)
- Una tupla con un solo valor, que necesita una coma final: (5,).
- Immutability (inmutabilidad)
- La propiedad de que el contenido de un objeto no se puede cambiar después de crearlo.
- Tuple unpacking (desempaquetado de tuplas)
- Asignar los elementos de una tupla a varios nombres a la vez, como en x, y = point.
- Dictionary (diccionario)
- Una colección mutable de claves únicas asociadas a valores, escrita {key: value}.
- Key (clave)
- El identificador único e inmutable que se usa para buscar un valor.
- KeyError
- Se lanza cuando indexas o eliminas una clave que no está en el diccionario.
- get()
- Devuelve el valor de una clave, o None o un valor por defecto indicado si la clave no existe.
- keys()
- Devuelve una vista de las claves de un diccionario.
- values()
- Devuelve una vista de los valores de un diccionario.
- items()
- Devuelve una vista de tuplas (clave, valor), práctica para desempaquetar en un bucle for.
- Membership on a dict (pertenencia en un diccionario)
- key in d comprueba solo las claves, nunca los valores.
- String immutability (inmutabilidad de las cadenas)
- Los caracteres de una cadena no se pueden cambiar en el lugar; las operaciones devuelven cadenas nuevas.
- [::-1]
- La rebanada que invierte una secuencia recorriéndola completa hacia atrás.
- Lexicographic order (orden lexicográfico)
- Un orden como el de un diccionario que compara cadenas carácter por carácter según su punto de código.
- ord() y chr()
- ord() da el punto de código de un carácter; chr() da el carácter correspondiente a un punto de código.
- Escape character (carácter de escape)
- La barra invertida, que le da al carácter siguiente un significado especial en un literal de cadena.
- Escape sequence (secuencia de escape)
- Una combinación con barra invertida, como \n, \t, \\ o \', que representa un solo carácter.
- Triple-quoted string (cadena con comillas triples)
- Una cadena delimitada por ''' o """ que puede ocupar varias líneas y contener comillas libremente.
- Raw string (cadena cruda)
- Un literal con el prefijo r en el que las barras invertidas no se tratan como escapes.
- split()
- Devuelve una lista de subcadenas, dividiendo por espacios en blanco por defecto o por un separador indicado.
- join()
- Se llama sobre una cadena separadora; devuelve una sola cadena formada a partir de un iterable de cadenas.
- strip()
- Devuelve una copia sin los espacios en blanco (o los caracteres indicados) al inicio y al final.
- find() vs index()
- Ambos localizan una subcadena; find() devuelve -1 si no está, index() lanza ValueError.
Dominio 4: Functions and exceptions (28%)
Consejos para el examen
- Las preguntas del examen sobre descomposición se centran en el porqué: reutilización, legibilidad, pruebas más fáciles y trabajo en equipo. Una función que devuelve un valor es más reutilizable que una que solo lo imprime.
- Un def debe ejecutarse antes de que corra la llamada, pero el cuerpo de una función puede referirse a otra función definida más abajo, porque los nombres dentro de un cuerpo se buscan solo en el momento de la llamada.
- Si una función no tiene return (o tiene un return solo), su llamada se evalúa a None; print(f()) mostrará None después de lo que f imprima. Un return con valores separados por comas da una tupla.
- Al seguir una recursión, escribe cada llamada en su propia línea con su argumento, baja hasta el caso base y luego multiplica o suma en el camino de regreso. Un caso base que los argumentos pueden saltarse es tan malo como no tener ninguno.
- Siempre posicionales antes que por palabra clave. Un argumento por palabra clave antes de uno posicional es un SyntaxError; darle dos valores a un parámetro o usar un nombre inexistente es un TypeError.
- Los valores por defecto van a la derecha. def f(a=1, b) ni siquiera llega a definirse: es un SyntaxError en el momento de la definición, no un error en el momento de la llamada.
- Cualquier asignación a un nombre en cualquier parte de una función lo hace local para toda la función, así que leerlo antes en esa misma función lanza UnboundLocalError en lugar de leer la global.
- Aprende qué clases están debajo de cuáles: IndexError y KeyError bajo LookupError, ZeroDivisionError bajo ArithmeticError, y SystemExit y KeyboardInterrupt directamente bajo BaseException, fuera de Exception.
- TypeError tiene que ver con el tipo de valor; ValueError, con el valor concreto. list.index() y list.remove() con un elemento inexistente lanzan ValueError, no IndexError.
- Solo se ejecuta el primer except que coincide. Un except solo debe ir al final y captura incluso KeyboardInterrupt; except Exception no captura SystemExit ni KeyboardInterrupt.
- Recorre las cláusulas except estrictamente de arriba hacia abajo y detente en la primera clase que sea igual o ancestro. Una clase general encima de una específica convierte la rama específica en código muerto, y Python no te avisa.
- Cuando una excepción escapa de una función, se omiten todas las líneas restantes de esa función, incluido su return. La excepción la captura el try más cercano que la rodea con un except que coincide, en cualquier punto hacia arriba de la cadena de llamadas.
Términos clave
- Decomposition (descomposición)
- Dividir un programa en funciones más pequeñas, cada una resolviendo una parte del problema.
- Function (función)
- Un bloque de código con nombre y reutilizable, definido con def y ejecutado al llamarlo.
- Abstraction (abstracción)
- Usar una función por lo que hace, sin necesidad de saber cómo lo hace.
- Top-down design (diseño de arriba hacia abajo)
- Planear primero los pasos principales como llamadas a funciones y después implementar cada función.
- def
- La palabra clave que inicia la definición de una función.
- Invocation (call) (invocación, llamada)
- Ejecutar una función escribiendo su nombre seguido de paréntesis y argumentos.
- Function object (objeto función)
- El valor creado por def y vinculado al nombre de la función; se puede referenciar sin llamarlo.
- NameError
- Se lanza cuando una llamada ocurre antes de que se haya ejecutado la instrucción def de la función.
- return
- Termina una función y devuelve un valor (o None) a quien la llamó.
- None
- El valor especial que significa sin valor; lo devuelven las funciones que no devuelven ninguna otra cosa.
- Tuple packing on return (empaquetado de tupla en return)
- return a, b devuelve una sola tupla (a, b), que quien llama puede desempaquetar.
- yield / generator (generador)
- yield convierte una función en un generador que produce valores uno por uno, pausándose entre ellos.
- Recursion (recursión)
- Una función que se llama a sí misma para resolver una versión más pequeña del mismo problema.
- Base case (caso base)
- La condición bajo la cual una función recursiva devuelve un resultado sin llamarse a sí misma.
- Recursive case (caso recursivo)
- La rama que vuelve a llamar a la función con una entrada más cercana al caso base.
- RecursionError
- Se lanza cuando la recursión supera la profundidad máxima de Python, normalmente porque nunca se alcanza el caso base.
- Parameter (parámetro)
- Un nombre en la definición de una función que recibe un valor cuando se llama a la función.
- Argument (argumento)
- El valor real que se proporciona en una llamada a función.
- Positional argument (argumento posicional)
- Un argumento que se asocia a un parámetro según su posición en la llamada.
- Keyword argument (argumento por palabra clave)
- Un argumento que se asocia por nombre, escrito name=value en la llamada.
- Default parameter value (valor por defecto de un parámetro)
- Un valor dado en la definición con name=value, que se usa cuando quien llama omite ese argumento.
- Required parameter (parámetro obligatorio)
- Un parámetro sin valor por defecto, que toda llamada debe proporcionar.
- Non-default argument follows default argument
- El SyntaxError que se lanza cuando un parámetro obligatorio se coloca después de uno con valor por defecto.
- Mutable default trap (trampa del valor por defecto mutable)
- Un valor por defecto de tipo lista o diccionario se crea una sola vez y lo comparten todas las llamadas que lo usan.
- Scope (ámbito)
- La región del código en la que un nombre es visible, como local o global.
- Shadowing (ocultamiento)
- Un nombre local que oculta, dentro de una función, a un nombre global o integrado escrito igual.
- global keyword (palabra clave global)
- Declara que un nombre usado en una función se refiere a la variable global, de modo que las asignaciones la cambian.
- UnboundLocalError
- Se lanza cuando se lee una variable local antes de asignarla en esa función; es una subclase de NameError.
- BaseException
- La clase raíz de todas las excepciones de Python.
- Exception
- La clase base de los errores ordinarios; excluye SystemExit y KeyboardInterrupt.
- ArithmeticError
- Clase base de los errores numéricos como ZeroDivisionError y OverflowError.
- LookupError
- Clase base de IndexError y KeyError, lanzadas por índices o claves no válidos.
- KeyboardInterrupt
- Se lanza cuando el usuario presiona Ctrl+C; deriva de BaseException, no de Exception.
- ZeroDivisionError
- Se lanza al dividir o calcular un residuo entre cero.
- IndexError vs KeyError
- IndexError: índice de secuencia fuera de rango; KeyError: clave de diccionario inexistente.
- TypeError
- Una operación recibió un valor de un tipo incorrecto, como sumar str e int.
- ValueError
- Un valor tiene el tipo correcto pero un contenido inaceptable, como int("abc").
- try-except
- Una instrucción que ejecuta el código de try y, si ocurre una excepción que coincide, ejecuta el bloque except correspondiente.
- Exception tuple (tupla de excepciones)
- except (A, B): maneja cualquiera de varios tipos de excepción en una sola rama.
- Bare except (except solo)
- except: sin tipo; captura todas las excepciones, incluidas SystemExit y KeyboardInterrupt, y debe ir al final.
- finally
- Un bloque que siempre se ejecuta después de try, haya ocurrido una excepción o no.
- First match rule (regla de la primera coincidencia)
- Python ejecuta solo la primera cláusula except cuyo tipo coincide con la excepción o con uno de sus padres.
- Unreachable handler (manejador inalcanzable)
- Una cláusula except que nunca puede ejecutarse porque una cláusula anterior captura una clase padre.
- Specific to general (de lo específico a lo general)
- El orden recomendado: las subclases antes que sus clases base, Exception al final.
- Propagation (propagación)
- Una excepción no manejada que sale de la función actual y pasa a quien la llamó, subiendo por la cadena de llamadas.
- Traceback
- El informe que Python imprime para una excepción no manejada, con la cadena de llamadas y el error.
- raise
- Una instrucción que lanza una excepción; un raise solo dentro de un bloque except vuelve a lanzar la excepción actual.
- Call stack (pila de llamadas)
- La cadena de llamadas a funciones activas a través de la cual se propaga una excepción.
Estudia PCEP gratis
Plan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.
Abrir el plan de estudioPlan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.