Sintaxis de Python - Una Guía Completa
Aprende la sintaxis de Python desde cero: sangría, variables, comentarios, tipos de datos, bucles, condicionales y funciones — con ejemplos ejecutables.
La sintaxis de Python es el conjunto de reglas que define cómo debe escribirse un programa en Python para que el intérprete pueda entenderlo y ejecutarlo. A diferencia de lenguajes como C o Java, Python utiliza sangría de espacios en blanco en lugar de llaves para delimitar bloques de código, y se lee casi como inglés simple — lo que lo convierte en uno de los principales motivos por los que Python es el primer lenguaje preferido por los principiantes.
Este capítulo cubre los bloques de construcción esenciales de la sintaxis de Python: sangría, instrucciones, comentarios, variables, tipos de datos, operadores, flujo de control, bucles, funciones y algunos errores comunes.
Sangría
En Python, la sangría no es una preferencia de estilo — es parte de la gramática del lenguaje. El intérprete usa la sangría para determinar qué instrucciones pertenecen al mismo bloque. La convención estándar (y la que aplican la mayoría de los linters) es 4 espacios por nivel.
Mezclar tabulaciones y espacios en el mismo archivo provoca un IndentationError. Usa uno u otro de forma consistente — la guía de estilo de Python (PEP 8) recomienda los espacios.
Errores de sangría comunes
# IndentationError: expected an indented block
if True:
print("oops") # missing indentation# IndentationError: unexpected indent
x = 1
y = 2 # indented for no reasonInstrucciones y Continuación de Línea
Cada instrucción de Python normalmente ocupa una línea y no termina con punto y coma (aunque el punto y coma es técnicamente válido). Cuando una instrucción es demasiado larga, puedes dividirla en varias líneas de dos maneras.
Continuación implícita dentro de corchetes — cualquier (, [ o { abierto te permite continuar en la siguiente línea:
total = (
100
+ 200
+ 300
)
print(total) # 600Continuación explícita con una barra invertida (\):
result = 1 + 2 + 3 \
+ 4 + 5
print(result) # 15También puedes colocar varias instrucciones en una sola línea con punto y coma, aunque esto no se recomienda:
x = 1; y = 2; print(x + y) # works, but avoid this styleComentarios
Los comentarios explican la intención y son ignorados por el intérprete. Python tiene dos tipos.
Comentarios de una sola línea
Inicia un comentario con #. Todo lo que sigue a # en esa línea se ignora:
# Calculate the area of a circle
radius = 5
area = 3.14159 * radius ** 2 # ** is the exponentiation operator
print(area)Comentarios multilínea (docstrings)
Python no tiene una sintaxis de comentario en bloque dedicada. La convención es usar cadenas con comillas triples. Cuando se colocan al inicio de una función, clase o módulo, se convierten en docstrings — accesibles en tiempo de ejecución a través de help():
def greet(name):
"""Return a greeting for the given name.
Args:
name (str): The person's name.
"""
return f"Hello, {name}!"
print(greet("Alice")) # Hello, Alice!Variables y Asignación
Una variable se crea en el momento en que se le asigna un valor. Python es tipado dinámicamente, por lo que no se declara un tipo:
x = 10 # integer
pi = 3.14 # float
name = "Alice" # string
active = True # booleanPuedes asignar múltiples variables en una sola línea:
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3O asignar el mismo valor a varias variables a la vez:
x = y = z = 0
print(x, y, z) # 0 0 0Los nombres de variables distinguen entre mayúsculas y minúsculas (age, Age y AGE son tres variables distintas). Para más información sobre reglas y convenciones de nomenclatura, consulta el capítulo de Variables de Python.
Tipos de Datos
Todo valor en Python tiene un tipo. Los tipos integrados más comunes son:
| Tipo | Ejemplo | Notas |
|---|---|---|
int | 42 | Entero de precisión arbitraria |
float | 3.14 | Punto flotante de 64 bits |
str | "hello" | Secuencia inmutable de caracteres Unicode |
bool | True / False | Subclase de int (True == 1, False == 0) |
list | [1, 2, 3] | Secuencia ordenada y mutable |
tuple | (1, 2, 3) | Secuencia ordenada e inmutable |
dict | {"a": 1} | Mapeo clave-valor |
set | {1, 2, 3} | Colección desordenada de valores únicos |
NoneType | None | Representa la ausencia de un valor |
Verifica el tipo de cualquier valor con type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>Para un análisis más detallado de los tipos, consulta el capítulo de Tipos de Datos de Python.
Operadores
Python admite varias categorías de operadores.
Operadores aritméticos
a, b = 10, 3
print(a + b) # 13 — addition
print(a - b) # 7 — subtraction
print(a * b) # 30 — multiplication
print(a / b) # 3.3333... — true division (always returns float)
print(a // b) # 3 — floor division
print(a % b) # 1 — modulo (remainder)
print(a ** b) # 1000 — exponentiationOperadores de comparación
Los operadores de comparación devuelven True o False:
print(5 == 5) # True
print(5 != 3) # True
print(5 > 3) # True
print(5 < 3) # False
print(5 >= 5) # True
print(5 <= 4) # FalseOperadores lógicos
print(True and False) # False
print(True or False) # True
print(not True) # FalsePara una referencia completa con operadores de asignación, bit a bit e identidad, consulta el capítulo de Operadores de Python.
Cadenas de Texto
Las cadenas son secuencias de caracteres Unicode. Pueden encerrarse entre comillas simples, dobles o triples:
s1 = "Hello, World!"
s2 = 'Hello, World!'
s3 = """This string
spans multiple lines."""f-strings (literales de cadena formateados)
Introducidas en Python 3.6, las f-strings son la forma recomendada de incrustar expresiones dentro de cadenas:
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.Operaciones comunes con cadenas
s = "python"
print(s.upper()) # PYTHON
print(s.capitalize()) # Python
print(len(s)) # 6
print(s[0]) # p (indexing)
print(s[1:4]) # yth (slicing)
print(s + " rocks") # python rocks (concatenation)Listas
Una lista es una colección ordenada y mutable. Los elementos pueden ser de tipos mixtos:
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[-1]) # cherry (negative index = from end)
fruits.append("date")
print(fruits) # ['apple', 'banana', 'cherry', 'date']
print(len(fruits)) # 4Flujo de Control
La instrucción if / elif / else
Usa if, elif (else-if) y else para bifurcar según condiciones:
score = 75
if score >= 90:
grade = "A"
elif score >= 75:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "F"
print(f"Grade: {grade}") # Grade: BUn detalle importante: a diferencia de muchos lenguajes, Python no tiene sintaxis switch/case antes de Python 3.10. Para múltiples condiciones sobre la misma variable, usa cadenas elif o una búsqueda en diccionario. Python 3.10+ introdujo la instrucción match como alternativa de coincidencia de patrones estructurales.
Para una referencia completa, consulta el capítulo de Python If Else.
El bucle for
El bucle for itera sobre cualquier iterable — una lista, cadena, rango u otra secuencia:
Usa range() para iterar un número específico de veces:
for i in range(5):
print(i) # 0, 1, 2, 3, 4Usa enumerate() cuando necesitas tanto el índice como el valor:
colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
print(index, color)
# 0 red
# 1 green
# 2 blueEl bucle while
El bucle while se repite mientras su condición sea True:
Asegúrate siempre de que la condición eventualmente se vuelva False, de lo contrario obtendrás un bucle infinito.
break, continue y else en bucles
break— sale del bucle inmediatamentecontinue— omite el resto de la iteración actual y pasa a la siguienteelseen un bucle — se ejecuta después de que el bucle termine normalmente (es decir, sin alcanzarbreak)
for n in range(10):
if n == 3:
continue # skip 3
if n == 6:
break # stop at 6
print(n)
# 0 1 2 4 5Funciones
Las funciones permiten empaquetar lógica reutilizable bajo un nombre. Define una función con def:
def add(a, b):
"""Return the sum of a and b."""
return a + b
result = add(3, 4)
print(result) # 7Valores de parámetros predeterminados
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Alice") # Hello, Alice!
greet("Bob", "Hi") # Hi, Bob!Retornar múltiples valores
Las funciones de Python pueden devolver múltiples valores como una tupla:
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 4, 1, 5, 9])
print(low, high) # 1 9Para más detalles, consulta el capítulo de Funciones de Python.
Palabras Clave
Python reserva ciertas palabras para el propio lenguaje. No puedes usarlas como nombres de variables:
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yieldSi usas accidentalmente una palabra clave como nombre de variable, Python lanzará un SyntaxError:
# SyntaxError: invalid syntax
for = 10Módulos e Importaciones
El código de Python se organiza en módulos (archivos .py). Importas el contenido de un módulo con import:
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793Importa nombres específicos con from ... import:
from math import sqrt, pi
print(sqrt(25)) # 5.0Usa un alias para acortar nombres de módulos largos:
import datetime as dt
today = dt.date.today()
print(today) # e.g. 2026-06-19