PHP e Python são linguagens dinâmicas e interpretadas, mas cresceram para trabalhos diferentes. O PHP foi feito para a web: cada requisição executa um arquivo .php que imprime uma página, e ele move o WordPress e o Laravel. Python é de uso geral: também roda sites (Django, Flask) e é o padrão em ciência de dados, scripts e machine learning. Para um site ou um trabalho com WordPress, PHP é o caminho direto; para quase todo o resto, Python é a escolha mais comum.
O jeito mais rápido de comparar é o mesmo programa nas duas. Aqui está um pequeno script em PHP, que você pode executar:
E o mesmo programa em 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)}")
A lógica é idêntica. As diferenças visíveis são de sintaxe: o PHP marca variáveis com $, termina instruções com ; e usa chaves nos blocos; o Python usa indentação e nenhum símbolo antes do nome.
Sintaxe lado a lado
| Tarefa | PHP | Python |
|---|---|---|
| Variável | $count = 5; | count = 5 |
| Juntar strings | "Hi " . $name | "Hi " + name |
| Inserir uma variável | "Hi $name" | f"Hi {name}" |
| Lista | [1, 2, 3] | [1, 2, 3] |
| Mapa chave/valor | ["a" => 1] | {"a": 1} |
| Tamanho | count($list), strlen($s) | len(list), len(s) |
| Percorrer um mapa | foreach ($m as $k => $v) | for k, v in m.items(): |
| Função | function add($a, $b) { return $a + $b; } | def add(a, b): return a + b |
| Função anônima | fn($x) => $x * 2 | lambda x: x * 2 |
| Valor padrão para chave ausente | $m["k"] ?? "default" | m.get("k", "default") |
| Igualdade estrita | === | == (sem conversão de tipos) |
Arrays: um tipo no PHP, lists e dicts no Python
O Python separa lists, dicts, tuples e sets. O PHP tem um único tipo de array, um mapa ordenado, que faz todos esses papéis. As chaves podem ser inteiros ou strings, e a ordem de inserção é mantida:
A versão em Python precisa de dois tipos diferentes:
colors = ["red", "green", "blue"]
codes = {"red": "#f00", "blue": "#00f"}
colors.append("yellow")
codes["green"] = "#0f0"
print("blue" in colors)
print("red" in codes)
O tipo único do PHP é prático, mas traz uma surpresa que o Python não tem: funções como array_filter mantêm as chaves originais, então uma lista filtrada pode ficar com buracos (0, 2, 3). Envolva o resultado em array_values() para renumerar.
Tipos e conversão automática
As duas linguagens têm tipagem dinâmica, e as duas aceitam type hints. A grande diferença é o que acontece quando tipos se misturam. O Python se recusa a somar uma string e um número; o PHP converte strings numéricas para você:
print("10" + 5) # TypeError: can only concatenate str (not "int") to str
print(7 / 2) # 3.5
print(7 // 2) # 3
O PHP 8 deixou as comparações entre strings e números muito mais sensatas, mas o hábito a criar é o mesmo: use === no PHP, a menos que você queira conversão. Com declare(strict_types=1); no topo de um arquivo, o PHP também rejeita tipos escalares errados passados para parâmetros tipados de funções, o que o aproxima do comportamento dos verificadores de tipo do Python.
Desenvolvimento web
É aqui que as duas mais diferem. Um arquivo PHP já é uma página web: coloque-o num servidor e cada requisição o executa do início, com os dados do formulário já em $_GET e $_POST. Execute este bloco, digite uma cidade e clique em Send: o script roda de novo com $_POST preenchido.
O Python precisa de um framework e de um servidor de aplicação rodando para a mesma página. Uma versão mínima em 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
Nenhum dos modelos é melhor em geral. O "uma requisição, uma execução nova" do PHP é simples de publicar e difícil de quebrar: uma falha afeta uma requisição, e a memória é liberada depois de cada página. O processo de longa duração do Python pode manter coisas na memória entre requisições e combina com websockets e trabalho em segundo plano, mas exige mais configuração. Os frameworks completos (Laravel e Symfony no PHP, Django no Python) acabam oferecendo recursos parecidos: rotas, ORM, templates, autenticação, filas.
Desempenho
Em páginas web, o PHP 8 com OPcache costuma ser mais rápido que o CPython para executar código simples, e o PHP 8 também traz um compilador JIT. Na prática, os dois passam a maior parte de uma requisição esperando o banco de dados ou outros serviços, então a diferença raramente decide um projeto. No Python a história da velocidade é outra: o trabalho numérico pesado fica com bibliotecas como NumPy e pandas, cujo núcleo é escrito em C, e é por isso que o Python lidera em dados apesar de um interpretador mais lento.
Onde cada uma é usada
| PHP é mais forte em | Python é mais forte em |
|---|---|
| Sites, temas e plugins WordPress | Análise de dados (pandas, Jupyter) |
| Apps web com Laravel e Symfony | Machine learning e IA (PyTorch, scikit-learn) |
| Lojas: WooCommerce, Magento, Shopware | Automação e scripts |
| Hospedagem compartilhada barata, agências, sites freelance | Computação científica, ensino |
| Páginas renderizadas no servidor e APIs | Back-ends web com Django, Flask, FastAPI |
O mercado de trabalho reflete isso. Vagas de PHP são principalmente de desenvolvimento web, muitas vezes com WordPress ou Laravel. Vagas de Python cobrem web, dados, DevOps e ML, então existem mais delas.
Qual aprender primeiro
Escolha pelo que você quer construir nos próximos meses:
- Você quer criar sites, trabalhar como freelancer ou com WordPress: aprenda PHP. Você terá uma página no ar rapidamente, e as habilidades se aplicam direto a trabalho pago. Comece por o que é PHP e variáveis.
- Você quer análise de dados, automação, IA ou uma primeira linguagem de uso geral: aprenda Python.
- Você quer criar apps web modernos de ponta a ponta: qualquer uma serve para o back-end, e você vai precisar de JavaScript no navegador de qualquer jeito; veja PHP ou JavaScript.
Quase tudo o que você aprende se transfere. Loops, funções, arrays e mapas, classes e exceções funcionam quase do mesmo jeito nas duas, então a segunda linguagem leva semanas, não meses.
Perguntas frequentes
PHP é mais rápido que Python?
Em requisições web típicas, o PHP 8 costuma ser mais rápido que o CPython, graças ao OPcache e a um motor rápido, mas os dois são rápidos o bastante para que o banco de dados e a rede decidam a maior parte do tempo de resposta. Para cálculo pesado, o Python normalmente passa o trabalho para bibliotecas escritas em C, como o NumPy.
Devo aprender PHP ou Python primeiro?
Aprenda Python primeiro se você quer programação em geral, análise de dados, automação ou machine learning. Aprenda PHP primeiro se o seu objetivo são sites, trabalho com WordPress ou apps Laravel, porque você consegue criar e publicar uma página funcionando em quase qualquer hospedagem.
Python pode substituir o PHP no desenvolvimento web?
Sim, Django, Flask e FastAPI criam os mesmos tipos de sites e APIs. A diferença está no deploy e no ecossistema: o PHP roda em quase toda hospedagem compartilhada e tem o WordPress, enquanto apps web em Python normalmente rodam como um servidor de aplicação de longa duração atrás de um proxy.
Qual o equivalente PHP de um dicionário Python?
Um array associativo: $user = ['name' => 'Ada', 'age' => 36]; e $user['name']. Arrays em PHP são mapas ordenados, então o mesmo tipo faz o papel de list e de dict do Python.