W3docs

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.

python— editable, runs on the server

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 reason

Instrucciones 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)   # 600

Continuación explícita con una barra invertida (\):

result = 1 + 2 + 3 \
         + 4 + 5
print(result)  # 15

Tambié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 style

Comentarios

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   # boolean

Puedes asignar múltiples variables en una sola línea:

a, b, c = 1, 2, 3
print(a, b, c)   # 1 2 3

O asignar el mismo valor a varias variables a la vez:

x = y = z = 0
print(x, y, z)   # 0 0 0

Los 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:

TipoEjemploNotas
int42Entero de precisión arbitraria
float3.14Punto flotante de 64 bits
str"hello"Secuencia inmutable de caracteres Unicode
boolTrue / FalseSubclase 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
NoneTypeNoneRepresenta 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 — exponentiation

Operadores 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)    # False

Operadores lógicos

print(True and False)   # False
print(True or False)    # True
print(not True)         # False

Para 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))       # 4

Flujo 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: B

Un 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:

python— editable, runs on the server

Usa range() para iterar un número específico de veces:

for i in range(5):
    print(i)   # 0, 1, 2, 3, 4

Usa 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 blue

El bucle while

El bucle while se repite mientras su condición sea True:

python— editable, runs on the server

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 inmediatamente
  • continue — omite el resto de la iteración actual y pasa a la siguiente
  • else en un bucle — se ejecuta después de que el bucle termine normalmente (es decir, sin alcanzar break)
for n in range(10):
    if n == 3:
        continue   # skip 3
    if n == 6:
        break      # stop at 6
    print(n)
# 0 1 2 4 5

Funciones

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)   # 7

Valores 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 9

Para 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       yield

Si usas accidentalmente una palabra clave como nombre de variable, Python lanzará un SyntaxError:

# SyntaxError: invalid syntax
for = 10

Mó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.141592653589793

Importa nombres específicos con from ... import:

from math import sqrt, pi
print(sqrt(25))   # 5.0

Usa un alias para acortar nombres de módulos largos:

import datetime as dt
today = dt.date.today()
print(today)   # e.g. 2026-06-19

Práctica

Práctica
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
Was this page helpful?