Willian Fernandes

O Fantástico Mundo do Python – Parte 1

Comente »

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…

5 comentários para "O Fantástico Mundo do Python – Parte 1"

  1. # Elcio disse:
    10/09/2007 às 16:48:16

    O exemplo 4 tem uma forma nova de se fazer:

    if “um” in numeros:
    print “Achou”

    É mais elegante, e a forma antiga (has_key) não é mais recomendada.

  2. # Michael disse:
    11/09/2007 às 22:58:25

    No exemplo #3 eu usaria, para PHP foreach… se assemelha mais ao phyton neste caso:
    $array=array(1,2,3,4,5);
    foreach ($array as $i) {
    echo $i;
    }

    ou mesmo sem os “{” e “}” que em casos curtos de uumma linha podem ser retirados…

    foreach ($array as $i) echo $i;

    Mas agora sei porque os feras gostam do phyton… ele se assemelha bastante ao javascript com relação aos objetos. Estou pensando em tornar o phyton uma linguagem de estudo para o ano que vem, mas ainda tenho que saber como hospedar isso…

  3. # Sergio de Andrade disse:
    13/09/2007 às 09:36:17

    Boa Willian, esta é uma ótima maneira de os programadores php visualizarem as facilidades que o phyton oferece em relação a outras linguagens web.

    Minha sugestão é que no próximo post você coloque uma comparação entre o php e o phyton da seguinte forma, crie um programinha nas duas linguagens exibindo um benchmark para vermos a diferença no tempo de processamento.

    :D

  4. # Inside disse:
    18/09/2007 às 12:28:03

    Python realmente é mais “enxuto”, mas… há uma série de questões que ainda me fazem escolher PHP, que não preciso citar

    []‘s

  5. 20/11/2007 às 23:36:31

    [...] falei sobre Python anteriormente, citando exemplos comparativos com PHP. Mas se você ainda não conhece a linguagem e quiser [...]

Deixe um comentário

*

(obrigatório)Não é aceito código HTML: adicione-o no pastie.org e poste apenas o link.