PHP y Python son lenguajes dinámicos e interpretados, pero nacieron para trabajos distintos. PHP se creó para la web: cada petición ejecuta un archivo .php que imprime una página, y mueve WordPress y Laravel. Python es de propósito general: también ejecuta sitios web (Django, Flask) y es la opción por defecto para ciencia de datos, scripting y machine learning. Para un sitio web o un trabajo con WordPress, PHP es el camino directo; para casi todo lo demás, Python es la opción más común.
La forma más rápida de compararlos es el mismo programa en los dos. Aquí tienes un pequeño script en PHP que puedes ejecutar:
Y el mismo programa en Python:
scores = {"Ada": 92, "Linus": 78, "Grace": 85}
for name, score in scores.items():
grade = "pass" if score >= 80 else "retry"
print(f"{name}: {score} ({grade})")
average = sum(scores.values()) / len(scores)
print(f"Average: {round(average, 1)}")
La lógica es idéntica. Las diferencias visibles son de sintaxis: PHP marca las variables con $, termina las sentencias con ; y usa llaves para los bloques; Python usa la indentación y ningún símbolo delante de las variables.
Sintaxis lado a lado
| Tarea | PHP | Python |
|---|---|---|
| Variable | $count = 5; | count = 5 |
| Unir cadenas | "Hi " . $name | "Hi " + name |
| Insertar una variable | "Hi $name" | f"Hi {name}" |
| Lista | [1, 2, 3] | [1, 2, 3] |
| Mapa clave/valor | ["a" => 1] | {"a": 1} |
| Longitud | count($list), strlen($s) | len(list), len(s) |
| Recorrer un mapa | foreach ($m as $k => $v) | for k, v in m.items(): |
| Función | function add($a, $b) { return $a + $b; } | def add(a, b): return a + b |
| Función anónima | fn($x) => $x * 2 | lambda x: x * 2 |
| Valor por defecto si falta la clave | $m["k"] ?? "default" | m.get("k", "default") |
| Igualdad estricta | === | == (sin conversión de tipos) |
Arrays: un solo tipo en PHP, listas y dicts en Python
Python separa listas, dicts, tuplas y sets. PHP tiene un único tipo de array, un mapa ordenado, que hace todos esos trabajos. Las claves pueden ser enteros o cadenas, y se conserva el orden de inserción:
La versión en Python necesita dos tipos distintos:
colors = ["red", "green", "blue"]
codes = {"red": "#f00", "blue": "#00f"}
colors.append("yellow")
codes["green"] = "#0f0"
print("blue" in colors)
print("red" in codes)
El tipo único de PHP es cómodo, pero trae una sorpresa que Python no tiene: funciones como array_filter conservan las claves originales, así que una lista filtrada puede tener huecos (0, 2, 3). Envuelve el resultado en array_values() para renumerarla.
Tipos y conversión automática
Los dos lenguajes tienen tipado dinámico y los dos permiten añadir declaraciones de tipo. La gran diferencia está en lo que ocurre cuando se mezclan tipos. Python se niega a sumar una cadena y un número; PHP convierte las cadenas numéricas por ti:
print("10" + 5) # TypeError: can only concatenate str (not "int") to str
print(7 / 2) # 3.5
print(7 // 2) # 3
PHP 8 hizo mucho más sensatas las comparaciones entre cadenas y números, pero el hábito que conviene adquirir es el mismo: usa === en PHP salvo que quieras conversión. Con declare(strict_types=1); al principio de un archivo, PHP también rechaza tipos escalares incorrectos pasados a parámetros tipados de una función, lo que lo acerca al comportamiento de los verificadores de tipos de Python.
Desarrollo web
Aquí es donde más se diferencian. Un archivo PHP ya es una página web tal cual: lo pones en un servidor y cada petición lo ejecuta desde arriba, con los datos del formulario ya en $_GET y $_POST. Ejecuta este bloque, escribe una ciudad y pulsa Send: el script se ejecuta otra vez con $_POST lleno.
Python necesita un framework y un servidor de aplicaciones en marcha para la misma página. Una versión mínima con Flask:
from flask import Flask, request
from markupsafe import escape
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def home():
city = request.form.get("city", "").strip()
page = '<form method="post"><input name="city"><button>Send</button></form>'
if city:
page += f"<p>Weather lookup for <strong>{escape(city)}</strong></p>"
return page
Ningún modelo es mejor en general. El "una petición, una ejecución nueva" de PHP es fácil de desplegar y difícil de romper: un fallo afecta a una sola petición y la memoria se libera después de cada página. El proceso de larga duración de Python puede guardar cosas en memoria entre peticiones y encaja con websockets y trabajo en segundo plano, pero necesita más configuración. Los frameworks completos (Laravel y Symfony en PHP, Django en Python) acaban ofreciendo funciones parecidas: rutas, un ORM, plantillas, autenticación, colas.
Rendimiento
Para páginas web, PHP 8 con OPcache suele ejecutar código simple más rápido que CPython, y PHP 8 también incluye un compilador JIT. En la práctica, los dos pasan la mayor parte de una petición esperando a la base de datos u otros servicios, así que la diferencia rara vez decide un proyecto. La historia de la velocidad en Python es distinta: el trabajo numérico pesado lo hacen librerías como NumPy y pandas, cuyo núcleo está escrito en C, y por eso Python lidera el trabajo con datos a pesar de tener un intérprete más lento.
Dónde se usa cada uno
| PHP es más fuerte en | Python es más fuerte en |
|---|---|
| Sitios, temas y plugins de WordPress | Análisis de datos (pandas, Jupyter) |
| Apps web con Laravel y Symfony | Machine learning e IA (PyTorch, scikit-learn) |
| Tiendas: WooCommerce, Magento, Shopware | Automatización y scripting |
| Hosting compartido barato, agencias, webs de freelance | Computación científica, enseñanza |
| Páginas renderizadas en el servidor y APIs | Backends web con Django, Flask, FastAPI |
El mercado laboral lo refleja. Los puestos de PHP son sobre todo de desarrollo web, a menudo con WordPress o Laravel. Los de Python abarcan web, datos, DevOps y ML, así que hay más.
Cuál aprender primero
Elige según lo que quieras construir en los próximos meses:
- Quieres crear sitios web, trabajar como freelance o trabajar con WordPress: aprende PHP. Tendrás una página en línea rápido, y lo que aprendas se traslada directamente a trabajo remunerado. Empieza por qué es PHP y las variables.
- Quieres análisis de datos, automatización, IA o un primer lenguaje general: aprende Python.
- Quieres construir apps web modernas de principio a fin: cualquiera de los dos sirve para el backend, y de todos modos necesitarás JavaScript para el navegador; consulta PHP vs JavaScript.
Casi todo lo que aprendas se traslada. Los bucles, las funciones, los arrays y mapas, las clases y las excepciones funcionan casi igual en los dos, así que el segundo lenguaje lleva semanas, no meses.
Preguntas frecuentes
¿PHP es más rápido que Python?
En peticiones web típicas, PHP 8 suele ser más rápido que CPython gracias a OPcache y a un motor rápido, pero los dos son lo bastante rápidos como para que la base de datos y la red decidan la mayor parte del tiempo de respuesta. Para cálculo numérico, Python normalmente delega el trabajo en librerías escritas en C, como NumPy.
¿Debo aprender primero PHP o Python?
Aprende Python primero si quieres programación general, análisis de datos, automatización o machine learning. Aprende PHP primero si tu objetivo son los sitios web, el trabajo con WordPress o las apps con Laravel, porque puedes construir y publicar una página que funcione en casi cualquier hosting.
¿Puede Python sustituir a PHP en el desarrollo web?
Sí, Django, Flask y FastAPI construyen el mismo tipo de sitios y APIs. La diferencia está en el despliegue y el ecosistema: PHP funciona en casi cualquier hosting compartido y tiene WordPress, mientras que las apps web de Python suelen ejecutarse como un servidor de aplicaciones de larga duración detrás de un proxy.
¿Cuál es el equivalente en PHP de un diccionario de Python?
Un array asociativo: $user = ['name' => 'Ada', 'age' => 36]; y $user['name']. Los arrays de PHP son mapas ordenados, así que el mismo tipo hace de list y de dict de Python.