Gosto muito de programar, principalmente para Web. Sempre gostei muito de PHP e outras linguagens/tecnlogias do mundo Open Source, apesar de também ter trabalhado bastante com ASP/ASP.NET (C#) meu principal foco foi o mundo Open Source.
Há um pouco menos de um ano comecei a estudar Python e cada dia que passa meu interesse por essa linguagem aumenta mais e mais.
Assim que lancei o blog recebi alguns comentários e e-mails de pessoas pedindo conteúdo de Python, pois sempre ouvem falar desta linguagem e gostariam de saber como ela é. Por isso resolvi listar algumas diferenças entre Python e PHP (umas das linguagens mais usadas no Brasil).
Abaixo segue uma lista com algumas diferenças entre a sintaxe e a estrutura de dados do PHP e do Python:
1. Criando listas (arrays)
PHP
$numeros = array(1,2,3,4,5);
echo "O número " . $numeros[1] . " é segundo número da lista";
Python
numeros = [1,2,3,4,5]
print "O número %i é segundo número da lista" % numeros[1]
2. Criando dicionários (arrays associativos)
PHP
$numeros = array(
"um" => 1,
"dois" => 2,
"tres" => 3,
"quatro" => 4,
"cinco" => 5
);
echo "O número " . $numeros["dois"] . " é segundo número da lista";
Python
numeros = {
"um":1,
"dois":2,
"tres":3,
"quatro":4,
"cinco":5
}
print "O número %i é segundo número da lista" % numeros["dois"]
3. Percorrendo a lista (array)
PHP
$numeros = array(1,2,3,4,5);
for ($i = 0; $i < count($numeros); $i++) {
echo $numeros[$i];
}
Python
numeros = [1,2,3,4,5]
for i in numeros:
print i
4. Verificando se uma chave existe em um dicionário (array associativo)
PHP
$numeros = array(
"um" => 1,
"dois" => 2,
"tres" => 3,
"quatro" => 4,
"cinco" => 5
);
if (array_key_exists("um", $numeros)) {
echo "A chave existe";
}
Python
numeros = {
"um":1,
"dois":2,
"tres":3,
"quatro":4,
"cinco":5
}
if numeros.has_key("um"):
print "A chave existe"
5. Replaces em String
PHP
$titulo = "{NOME} e o Pé de Feijão";
$titulo = str_replace("{NOME}", "João", $titulo);
//Ou, para simplicar em uma única linha
$titulo = str_replace("{NOME}", "João", "{NOME} e o Pé de Feijão");
Python
titulo = "{NOME} e o Pé de Feijão"
titulo = titulo.replace("{NOME}", "João")
#Ou, para simplicar em uma única linha
titulo = "{NOME} e o Pé de Feijão".replace("{NOME}", "João")
6. Escrevendo uma parte da String
PHP
$titulo = "João e o Pé de Feijão";
echo substr($titulo, 9, 2);
Python
titulo = "João e o Pé de Feijão"
print titulo[9:11]
7. Verificando tipo da variável
PHP
$var = "Teste";
if (is_array($var)) {
echo "É array";
}
elseif (is_string($var)) {
echo "É string";
}
elseif (is_integer($var)) {
echo "É inteiro";
}
Python
var = "Teste"
if type(var) == list:
print "É array"
elif type(var) == str:
print "É string"
elif type(var) == int:
print "É inteiro"
8. Estrutura de controle
PHP
$n = 4;
if ($n == 1) {
echo "Um";
}
elseif ($n == 2) {
echo "Dois";
}
else {
echo "Maior que dois";
}
Python
n = 4
if n == 1:
print "Um"
elif n == 2:
print "Dois"
else:
print "Maior que dois"
9. Definindo funções
PHP
function Teste() {
echo "teste";
}
Teste();
Python
def Teste():
print "teste"
Teste()
10. Definindo classes
PHP
class TestePai {
}
class Teste extends TestePai {
public function __construct() {
echo "Esta é a classe Teste que faz herança da classe TestePai.";
}
}
$t = new Teste();
Python
class TestePai:
pass
class Teste(TestePai):
def __init__(self):
print "Esta é a classe Teste que faz herança da classe TestePai.";
t = Teste()
Perceba que, em todos os casos, acabamos escrevendo menos código em Python do que em PHP. Isso por que em Python temos uma estrutura de dados mais simples e sua forma de trabalhar sempre com objetos facilita muito a vida do programador. Ao invés de ficarmos decorando milhares de funções em PHP, decoramos somente alguns métodos em Python.
Particularmente, acho mais fácil decorar métodos do que funções, isso porque os métodos se diferenciam entre os tipos de objetos disponíveis na linguagem. Além disso, se eu estiver com dúvida se algum método existe ou não em determinado objeto, basta utilizar a função dir:
>>> minha_lista = [1,2,3,4]
>>> dir(minha_lista)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__',
'__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__',
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index',
'insert', 'pop', 'remove', 'reverse', 'sort']
>>> lista.sort()
Ao digitar a função dir() passando como parâmetro o objeto minha_lista, podemos ver todos os método que um objeto do tipo list possui.
Em posts futuros colocarei exemplos mais complexos, e quem sabe envolvendo outras linguagens também…
Você pode sugerir um exemplo, basta escrever nos comentários…