<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jeveaux.com &#187; Python</title>
	<atom:link href="http://jeveaux.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeveaux.com</link>
	<description>blog de um apaixonado por programação, videogame, leitura, ideias empreendedoras e agora tatuagem</description>
	<lastBuildDate>Tue, 05 Jul 2011 19:40:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Erros comuns ao iniciar com Python</title>
		<link>http://jeveaux.com/2008/erros-comuns-ao-iniciar-com-python/</link>
		<comments>http://jeveaux.com/2008/erros-comuns-ao-iniciar-com-python/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 13:29:51 +0000</pubDate>
		<dc:creator>jeveaux</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jeveaux.com/blog/2008/erros-comuns-ao-iniciar-com-python/</guid>
		<description><![CDATA[Eu já andei escrevendo algumas coisas sobre python aqui no blog, já faz um tempinho, tudo bem, mas ainda são uma boa fonte de consulta para quem não sabe nada a respeito e quer começar a aprender. Depois que parei &#8230; <a href="http://jeveaux.com/2008/erros-comuns-ao-iniciar-com-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Eu <a href="http://www.jeveaux.com/blog/category/python/" target="_blank">já andei escrevendo algumas coisas sobre python aqui no blog</a>, já faz um tempinho, tudo bem, mas ainda são uma boa fonte de consulta para quem não sabe nada a respeito e quer começar a aprender. Depois que parei de escrever sobre python no blog parei também de estudá-lo, infelizmente. Há alguns dias encontrei meu livro <a href="http://oreilly.com/catalog/9780596513986/index.html" target="_blank"><em>Learning Python</em></a> e resolvi ler mais uma vez pra refrescar a memória, já que <a href="http://video.globo.com" target="_blank">aqui no trabalho</a> tem <a href="http://www.brunocarvalho.com/" target="_blank">alguns fanáticos</a> por Ruby (<em>não que eu não goste de Ruby, eu gosto também</em>) que detestam python.</p>
<p>Logo nos primeiros quinze capítulos do livro encontrei e relembrei da famosa instrução <em>pass</em> do python, não sei como pude me esquecer de uma instrução tão importante. Basicamente, para quem não conhece, o <em>pass</em> no python está para as instruções assim como o <em>None</em> está para as atribuições, ou seja, ela simplesmente não faz nada, é uma função <em>null/None/nil</em>, como preferir e existe apenas para fins de utilização onde a sintaxe obrigue a existir uma instrução, como num <em>while</em> infinito, por exemplo.</p>
<p>Voltando aos pontos comuns de erros:</p>
<ul>
<li><strong>Dois pontos</strong><br />
Em instruções compostas (<em>if, while, for</em>, etc) não use mais os parênteses (<em>brackets</em>), em python você deve usar dois pontos &#8211; :</li>
<li><strong>Endentação e espaços em branco</strong><br />
Siga um modelo de tabulação consistente e único no seu script. Se você começou usando dois espaços, ou tabulação de 4 espaços ou seja o que for, mantenha-a. O interpretador, geralmente, não saberá o que fazer se você misturar vários de tipos de tabulação e espaçamento.</li>
<li><strong>Comece sempre na coluna 1</strong><br />
Certifique-se sempre de começar a primeira linha do seu código na primeira coluna disponível, principalmente se estiver usando o prompt interativo. É muito comum que um espaço ali tire o seu sono.</li>
<li><strong>Atribuições com tipos mutáveis e imutáveis</strong><br />
Estude e tenha certeza de que realmente aprendeu o comportamento dos tipos de dados em python &#8211; <em>listas, dicionário</em>s<em>, strings e números</em>. Não pense que se você sabe a linguagem XPTO que os concentois serão os mesmos, principalmente, não pense que isso será uma perda de tempo. É muito comum, por exemplo, fazer uma atribuição como: <em>lista = lista.append(alguma_coisa)</em>. Com esta atribuição a única operação será atribuir <em>None</em> a <em>lista</em> e com isso perder completamente a referência para a sua lista de verdade.</li>
</ul>
<p>Esses são os erros que sempre me incomodam e são os que eu sempre acabo fazendo, certamente que existem outros detalhes pontuais que muita gente deve passar ou ter passado. De qualquer forma, em tempos de desenvolvedores poliglotas, estes tipos de detalhes aparecerão e se tornarão cada vez mais importantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeveaux.com/2008/erros-comuns-ao-iniciar-com-python/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Começando com Python #3/undefined</title>
		<link>http://jeveaux.com/2007/comecando-com-python-3undefined/</link>
		<comments>http://jeveaux.com/2007/comecando-com-python-3undefined/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 14:19:02 +0000</pubDate>
		<dc:creator>jeveaux</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.jeveaux.com/blog/2007/comecando-com-python-3undefined/</guid>
		<description><![CDATA[Continuando a nossa série de posts sobre como aprender Python, vamos agora começar a falar de OO com Python. Para quem não viu os outros posts, pode ler o primeiro post aqui e o segundo aqui. Não, eu não esqueci &#8230; <a href="http://jeveaux.com/2007/comecando-com-python-3undefined/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.python.org/images/python-logo.gif" align="right" height="71" width="211" />Continuando a nossa série de posts sobre como aprender Python, vamos agora começar a falar de OO com Python. Para quem não viu os outros posts, pode ler o primeiro post <a href="http://www.jeveaux.com/blog/?p=17">aqui</a> e o segundo <a href="http://www.jeveaux.com/blog/?p=21">aqui</a>.</p>
<blockquote><p><em>Não, eu não esqueci de continuar postando sobre python, apenas demorei um pouco na seqüência.</em></p></blockquote>
<p>Objetos são a unidade fundamental de qualquer sistema orientado a objetos. Orientação a objetos é um termo que descreve uma série de técnicas e soluções para problemas computacionais. No nosso caso específico, vamos falar apenas de programação Orientada a Objetos, que é um paradigma de programação no qual um programa é estruturado em objetos, e que enfatiza abstração, encapsulamento, polimorfismo e herança. Em Python,  tudo é um objeto (tipos, valores, classes, funções, métodos e, é claro, instâncias).</p>
<p>Em Python, a estrutura essencial para definir novos objetos é a classe. As classes são definidas em código-fonte, onde recebem um nome identificador e encapsulam um conjunto de atributos (dados) e métodos (operações). Vejamos a estrutura simples de uma classe em Python:</p>
<pre>[code]class MinhaClasse:
    atributo1 = valor;
    atributo2 = valor;
    def metodo1(self):
        #faz alguma coisa
    def metodo2(self, atributo1):
        #faz alguma coisa[/code]</pre>
<p>Vejamos uma classe funcional agora:</p>
<pre>[code]class HelloWorld:
    'Minha Primeira Classe em Python'
    i = 123
    def funcao(self):
        return 'Hello World!!!'[/code]</pre>
<p>As classes suportam dois tipos distintos de operações, são elas: instanciação e referência a atributos.</p>
<p>A referência a atributos possui uma sintaxe padrão para os objetos de classses em Python: <em>obj.atributo</em>. Sendo <em>obj </em>o seu objeto classe e <em>atributo</em> algum atributo válido, seja ele um atributo (variável) do seu objeto classe ou um objeto função (operação). Usando a classe acima podemos referenciar <em>HelloWorld.i</em> e <em>HelloWorld.funcao</em>, estas referências serão válidas e retornarão um inteiro (123) e um objeto função, respectivamente.</p>
<p>A instanciação do objeto classe é como nas demais linguagens orientadas a objetos, nós vamos basicamente iniciar um objeto de um determinado tipo (o tipo é o objeto classse) e atribuir a algum atributo. A instanciação (<em>calling</em>) de uma classe, por default, cria um objeto vazio. Por exemplo, para instanciarmos nossa classe de exemplo:</p>
<pre>[code]x = HelloWorld()[/code]</pre>
<p>Porém, muitas classes podem precisar criar um novo objeto em um estado inicial pré-determinado. Para estes casos, existe um método especial que pode ser definido pela classe, é o método <em>__init__()</em>, conforme próximo exemplo. O método <em>__init__()</em> é o construtor da classe e poderá ter ou não atributos, isso vai depender das necessidades de cada classe.</p>
<pre>[code]class HelloWorld:
    'Minha Primeira Classe em Python'
    i = 123
    def __init__(self):
        self.i = 123456
    def funcao(self):
        return 'Hello World!!!'[/code]</pre>
<p>Agora, após esta alteração em nossa classe, caso ocorra uma referência ao atributo <em>i</em> sem que haja uma instanciação da classe, o valor retornado será 123, mas caso a classe tenha sido instanciada, o valor retornado será 123456.</p>
<pre>[code]print HelloWorld.i
123
x= HelloWorld()
print x.i
123456[/code]</pre>
<p>&#8220;<em>- E aquela String perdida ali no começo da classe?</em>&#8220;, você já se perguntou isso? Aquela String é chamada de <em><a href="http://epydoc.sourceforge.net/docstrings.html">docstring</a> </em>e pode ser acessada através do atributo <em>__doc__</em>, que no nosso caso irá retornar a String <em>&#8220;Minha Primeira Classe em Python&#8221;</em>. As <em><a href="http://epydoc.sourceforge.net/docstrings.html">docstring</a> </em>podem ser inseridas no início de funções, classes e métodos, é uma convenção criada para documentação. Esta documentação poderá ser consultada depois usando o <a href="http://lfw.org/python/pydoc.html">pydoc</a> com o comando <em>help</em>. Abaixo acesso direto ao atributo <em>__doc__</em> da classe.</p>
<pre>[code]print HelloWorld.__doc__
Minha Primeira Classe em Python[/code]</pre>
<p>Consulta ao <em>help </em>da classe usando o <em>pydoc</em>.</p>
<pre>[code]help(HelloWorld)
Help on class HelloWorld in module __main__:class HelloWorld
 |  Minha Primeira Classe em Python
 |
 |  Methods defined here:
 |
 |  __init__(self)
 |
 |  funcao(self)
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  i = 123[/code]</pre>
<p>Nós poderíamos ter definido mais informações de documentação nesta classe, nos métodos <em>__init__()</em> e <em>funcao</em> por exemplo. Se fosse o caso, basta adicionar os comentários entre aspas (<em>&#8221;</em>) na <strong>primeira</strong> linha de cada método.</p>
<p>Herança, herança múltipla, exceções e definições de escopo de atributos e métodos serão abordados no próximo post, já estou achando esse aqui muito longo, esta continuação já está em <em>draft </em>e sairá mais rápido! :D</p>
]]></content:encoded>
			<wfw:commentRss>http://jeveaux.com/2007/comecando-com-python-3undefined/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Começando com Python #2/undefined</title>
		<link>http://jeveaux.com/2007/comecando-com-python-2undefined/</link>
		<comments>http://jeveaux.com/2007/comecando-com-python-2undefined/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 02:17:55 +0000</pubDate>
		<dc:creator>jeveaux</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[PyDev]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.jeveaux.com/blog/?p=21</guid>
		<description><![CDATA[Vamos começar essa segunda parte aprendendo a usar o PyDev, plugin do Eclipse para programar em Python. Existem várias outras alternativas de ambiente de desenvolvimento, para quem não gosta do Eclipse ou não quer usa-lo com Python, pode escolher entre &#8230; <a href="http://jeveaux.com/2007/comecando-com-python-2undefined/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://pydev.sourceforge.net/"><img src="http://pydev.sourceforge.net/images/pydev_logo6.gif" align="right" height="64" width="164" /></a>Vamos começar essa segunda parte aprendendo a usar o PyDev, plugin do Eclipse para programar em Python. Existem várias outras alternativas de ambiente de desenvolvimento, para quem não gosta do Eclipse ou não quer usa-lo com Python, pode escolher entre algumas das alternativas que conheço: IDE <a href="http://www.die-offenbachs.de/eric/index.html">Eric</a>, <a href="http://anjuta.sourceforge.net/">Anjuta</a>, <a href="http://boa-constructor.sourceforge.net/">BOA Constructor</a>, <a href="http://drpython.sourceforge.net/">DrPython</a> e quem gosta de IntelliJ IDEA pode usar o <a href="http://plugins.intellij.net/plugin/?id=631">Pythonid</a> como plugin.</p>
<p>Depois de um HelloWorld, uma das coisas mais difíceis é conseguir pensar em algo interessante para continuar os estudos e como ter um ambiente organizado e produtivo. Então veremos o PyDev e depois alguns outros exemplos mais interessantes.</p>
<h4> Instalando PyDev</h4>
<ol>
<li>Acesse: <a href="http://pydev.sourceforge.net/">http://pydev.sourceforge.net/</a>
<ol>
<li>Instale pelo update do Eclipse: <a href="http://pydev.sourceforge.net/updates/">http://pydev.sourceforge.net/updates/</a></li>
<li>Ou baixe o zip e faça a instalação manual: <a href="http://www.sourceforge.net/projects/pydev/">http://www.sourceforge.net/projects/pydev/</a></li>
</ol>
</li>
<li>Pronto! Simples e rápido.</li>
</ol>
<h4> PyDev Features</h4>
<ul>
<li>Suporte a Python 2.4, 2.5 e Jython;</li>
<li>Code completation e highlighting;</li>
<li>Wizards de projetos, módulos, etc;</li>
<li>Organize Imports e Autoformat Code;</li>
<li>Refactoring;</li>
<li>Code Assistant (<em>CTRL+1</em>);</li>
<li>Code Folding;</li>
<li>Eclipse Tasks integration;</li>
<li>Debugger completinho;</li>
<li>PyDev Perspective;</li>
<li>E muitas outras;</li>
</ul>
<p><span id="more-21"></span></p>
<h4> PyDev Features Screenshots</h4>
<p align="center"><a href="/blog/images/python/code1.png"><img src="/blog/images/python/code1.png" height="80" width="80" /></a> <a href="/blog/images/python/code2.png"><img src="/blog/images/python/code2.png" height="80" width="80" /></a> <a href="/blog/images/python/import.png"><img src="/blog/images/python/import.png" height="80" width="80" /></a> <a href="/blog/images/python/trycatch.png"><img src="/blog/images/python/trycatch.png" height="80" width="80" /><br />
</a><em><small>PyDev features screenshots.</small></em><a href="/blog/images/python/trycatch.png"><br />
</a></p>
<h4>Configuração básica</h4>
<p>A configuração do plugin é simplória, só é preciso indicar a localização do interpretador do Python (<em>python.exe</em>, no caso do windows). No Eclipse, selecione o menu <strong>Window &gt; Preferences</strong> e selecione a opção <strong>PyDev </strong>na árvore de configurações disponíveis, conforme seguem as screenshots.</p>
<p align="center"><a href="/blog/images/python/pythonconfig01.png"><img src="/blog/images/python/pythonconfig01.png" height="120" width="120" /></a> <a href="/blog/images/python/pythonconfig02.png"><img src="/blog/images/python/pythonconfig02.png" height="120" width="120" /><br />
</a><em><small>Configurando interpretador para Python.</small></em><a href="/blog/images/python/pythonconfig02.png"><br />
</a></p>
<p>Aproveitando o gancho, vamos configurar o Jython também, apesar de não ser o foco desta série de post, mas como o PyDev também oferece um suporte muito bom ao Jython, segue a configuração, assim como o para o Python só é preciso selecionar a localização do interpretador (<em>jython.jar</em>).</p>
<p align="center"><a href="/blog/images/python/jythonconfig01.png"><img src="/blog/images/python/jythonconfig01.png" height="120" width="120" /></a> <a href="/blog/images/python/jythonconfig02.png"><img src="/blog/images/python/jythonconfig02.png" height="120" width="120" /></a><br />
<em><small>Configurando interpredor para Jython.</small></em></p>
<h4>Criando o projeto</h4>
<p>Plugin instalado e configurado corretamente, vamos agora começar nosso projeto e melhorar um pouco os exemplos. Menu <strong>File &gt; New &gt; Project</strong> ou <strong>CTRL+N</strong>. Na categoria PyDev selecione a opção <strong>PyDev Project</strong> e clique em Next. Basicamente precisaremos preencher apenas o nome do projeto e selecionar a versão do interpretador do Python de acordo com o interpretador que indicamos durante a configuração do plugin, as demais configurações são as mesmas de um projeto Java no Eclipse, vai de cada um mudar ou não.</p>
<p align="center"><a href="/blog/images/python/newproject.png"><img src="/blog/images/python/newproject.png" height="120" width="120" /></a> <a href="/blog/images/python/pythonproject01.png"><img src="/blog/images/python/pythonproject01.png" height="120" width="120" /></a><br />
<em><small>Criando novo projeto Python.</small></em></p>
<p>Com o projeto criado, agora precisamos apenas partir para os exemplos. Atalho <strong>CTRL+N</strong> ou clique com o botão direito do mouse no projeto criado e siga <strong>New &gt; PyDev Module</strong>. No primeiro exemplo de verdade, será uma demonstração do uso de dos operadores for e if, com um exemplo simples de repetição e desvio de fluxo, faremos um pequeno loop de 0 até 10, escrevendo a cada iteração se o iterador é ímpar ou par.</p>
<pre>[code]# Exemplo01: for e if
 for i in range(10):
    if (i%2==0) :
        print 'par'
    else :
        print 'impar'
 print 'Fim!' [/code]</pre>
<p>Para criar e executar o exemplo, siga o passos descritos acima, ou pelas figurinhas abaixo :D :</p>
<p align="center"><a href="/blog/images/python/newmodule.png"><img src="/blog/images/python/newmodule.png" height="120" width="120" /></a> <a href="/blog/images/python/executando.png"><img src="/blog/images/python/executando.png" height="120" width="120" /></a><br />
<em><small>Criando novo module e executando-o.</small></em></p>
<p>Explicando o exemplo 1 linha por linha:</p>
<ul>
<li><strong>Linha 1</strong>: Comentário em linha (#);</li>
<li><strong>Linha 2</strong>: Começo da repetição, limitada até 10 pelo trecho range(10);</li>
<li><strong>Linha 3</strong>: Teste condicional que verifica se o iterador é par;</li>
<li><strong>Linha 4</strong>: Se for par, irá imprimir no console a string &#8220;par&#8221;;</li>
<li><strong>Linha 5</strong>: Desvio para o caso do teste ser falso;</li>
<li><strong>Linha 6</strong>: Imprime a string &#8220;impar&#8221; caso o teste seja falso;</li>
<li><strong>Linha 7</strong>: Imprime a string &#8220;Fim!&#8221; indicando o término da execução;</li>
</ul>
<p>Nosso segundo exemplo, continuando com os desvios de fluxo e repetição, veremos uma pequena aplicação de uma repetição de condicionais aninhados (<em>if, else if, else if, else</em>) e também como pode ser feita a entrada de dados pelo usuário durante a execução. O exemplo mostra uma calculadora do índice de massa corporal (IMC) ou o mais conhecido peso ideal.</p>
<pre>[code]#Exemplo02: Calculadora de IMC
 print 'Calculadora de IMC'
 peso = raw_input('Qual seu peso? ')
 altura = raw_input('Qual a sua altura? ')
 imc = float(peso) / (float(altura)**2)
 print 'IMC = %s' % imc
 if imc &lt; 18.5 :
    print 'Abaixo do peso ideal'
 elif imc &gt;= 18.5 and imc &lt;= 24.9 :
    print 'Parabens, peso ideal'
 elif imc &gt;= 25 and imc &lt;= 29.9 :
    print 'Acima do peso'
 elif imc &gt;= 30 :
    print 'Voce esta obeso!'[/code]</pre>
<p>Explicando o exemplo 02 (apenas as linhas diferentes):</p>
<ul>
<li><strong>Linha 3</strong>: Inicialização de uma variável (atributo) chamado peso. Utilização do comando raw_input que exibe a string passada como argumento e armazena a entrada do usuário na variável indicada (peso);</li>
<li><strong>Linha 4</strong>: idem a linha 3;</li>
<li><strong>Linha 5</strong>: Cáculo do IMC, que consiste em dividir o peso pela altura elevada ao quadrado. O operador ** eleva o atributo a esquerda ao atributo a direita, no caso do nosso exemplo altura elevado a 2. O comando float() é para converter a entrada que veio pelo raw_input como String em Float;</li>
<li><strong>Linha 6</strong>: O valor do IMC é exibido, com o auxílio do operador % que insere o valor na posição assinalada pelos caracteres %s dentro da mensagem. O código %s faz com que Python transforme o número em <em>string</em>.</li>
<li><strong>Linha 9, 11 e 13</strong>: O comando elif é uma junção de else+if que resultou no elif;</li>
</ul>
<p>Bom, por enquanto é isso pessoal, o próximo post será sobre programação Orientada a Objetos com Python, com mais exemplos e menos screenshots, um abraço e qualquer dúvida e-mail-me.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeveaux.com/2007/comecando-com-python-2undefined/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Começando com Python #1/undefined</title>
		<link>http://jeveaux.com/2007/comecando-com-python-1undefined/</link>
		<comments>http://jeveaux.com/2007/comecando-com-python-1undefined/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 20:45:51 +0000</pubDate>
		<dc:creator>jeveaux</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.jeveaux.com/blog/?p=17</guid>
		<description><![CDATA[Pronto, nada melhor do que um feriadão acompanhado daquela viagem pra casa da mamãe hein; descanso, paz e sossego (e sem internet) é o que eu precisava pra repor as baterias e aliviar a maldita gastrite. E num dos vários &#8230; <a href="http://jeveaux.com/2007/comecando-com-python-1undefined/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.python.org/images/python-logo.gif" align="right" border="0" height="71" width="211" />Pronto, nada melhor do que um feriadão acompanhado daquela viagem pra casa da mamãe hein; descanso, paz e sossego (e sem internet) é o que eu precisava pra repor as baterias e aliviar a maldita gastrite. E num dos vários devaneios diários resolvi que esta seria a semana do Python no blog, vou escrever aqui como eu conheci e aprendi Python.</p>
<p>E tudo começou em 2004, foi quando eu realmente me interessei por Python, até então eu não tinha contato com muitas linguagens de <em>script </em>além de JavaScript, PHP e Shell. Durante o <a href="http://www.softwarelivre.org/forum2004/">FISL5.0</a> quando assisti a palestra <a href="http://www.slideshare.net/osantana/matando-o-java-e-mostrando-o-python/">Matando o Java e mostrando o Python</a>, por Osvaldo Santana Neto e Ruda Moura e que diga-se de passagem foi muito engraçado, neste ano ocorria o primeiro Javali e todo o pessoal do Java resolveu invadir a palestra do Osvaldo e Ruda. Então juntei o incentivo que tive no FISL na palestra mais as cutucadas que sempre ouvia/lia do <a href="http://lixo.org">CV</a> sobre Java e Python, e como ele mesmo dizia: &#8220;Para programar em Python é preciso ter <a href="http://br.answers.yahoo.com/question/index?qid=20060718090203AAvVH1t">culhões</a>&#8221; e eu resolvi então testar os meus (sem duplo sentido por favor), e comecei a gostar de Python.</p>
<p><span id="more-17"></span>E então comecei a jornada e como todo bom nerd quando quer aprender ou saber qualquer informação sobre qualquer tipo de coisa, o primeiro passo foi: <a href="http://www.google.com/search?q=python">http://www.google.com/search?q=python</a> e pronto, todos meus problemas foram resolvidos :D</p>
<p>Brincadeiras a parte, antes de instalar e me preocupar em sair escrevendo códigos eu analisei algumas características de Python e gostei de:</p>
<ul>
<li>Sintaxe simples e clara + um ótimo interpretador = bons resultados;</li>
<li>Orientada a objetos (herança múltipla, eu particularmente não gosto muito e uso com muito cuidado, estigma vindo do Java) e com suporte para se trabalhar de modo estrutural ou funcional; <span class="anchor" id="line-40"></span></li>
<li>Tratamento de exceções; <span class="anchor" id="line-41"></span></li>
<li>Suporte a módulos eficiente; <span class="anchor" id="line-42"></span></li>
<li>Garbage Collector; <span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span></li>
<li>Portabilidade;</li>
<li>Plugin para desenvolver em Python no Eclipse;</li>
</ul>
<p>E não gostei muito de (pelo menos no início, depois passa a ser costume):</p>
<ul>
<li> Definição de blocos (visibilidade, escopo de código, etc) por identação e não por identificadores (como &#8220;{&#8221; e &#8220;}&#8221; por exemplo);</li>
<li>Apesar de ter por baixo dos panos um PSF (<em>Python Software Foundation</em>) e um PEP (<em>Proposal Enhancement Python</em>) as mudanças precisam passar pelo BDFL (Benevolent Dictator for Life) que nada mais é do que o criador da linguagem, Guido van Rossum, nem preciso falar o motivo da preocupação, qualidades e capacidade a parte, isso não deveria ficar na mão de uma única pessoa;</li>
<li>Liberdade de mais abre muitas portas para o programador cometer erros;</li>
</ul>
<p>Mas achei que as qualidades pesaram mais do que os desagrados que tive e então resolvi gastar um tempo por semana para estudar e aprender Python e tenho feito isso até hoje, apesar de nunca ter usado profissionalmente (leia, ganhar dinheiro com isso) eu continuo estudando e brincando sempre que posso. Após essa análise de características de Python, comecei a preparação do meu ambiente de desenvolvimento.</p>
<ol>
<li>Acesse <a href="http://www.python.org/download/">www.python.org/download/</a> e baixe o instalador para o seu sistema operacional, se quiser tem opções para baixar os fontes, módulos, outras versões, etc;</li>
<li>E pronto, abra o IDLE e vamos lá.</li>
<li>Esse é opcional, quem não larga o Eclipse nem pra navegar na Internet, use o update site do <a href="http://pydev.sourceforge.net">PyDev</a> para instalar o plugin de desenvolvimento Python no Eclipse, siga o menu Help &gt; Software Updates &gt; Find and Install&#8230; &gt;&gt; Search for new features to install e adicione um novo Remote Site com o endereço a seguir: <a href="http://pydev.sourceforge.net/updates/">http://pydev.sourceforge.net/updates/</a></li>
</ol>
<p>Para saber se tudo está correto (e estará) abra o IDLE e digite algo como 4*4</p>
<p>[code]IDLE 1.2.1<br />
4*4<br />
16[/code]</p>
<p>Se quiser pode continuar brincando de calculadora, vai funcionar direitinho, mas não se empolgue e esqueça das outras funcionalidades. Passando para um outro exemplo, HelloWorld:</p>
<p>[code]print 'HelloWorld'<br />
HelloWorld[/code]</p>
<p>E prontinho, este foi um primeiro HelloWorld em Python. Para não me estender muito neste post (e ter o que escrever nos próximos) vou ficar por aqui, amanhã ou depois postarei mais sobre Python e mais recursos interessantes como estruturas condicionais e de repetição, etc.</p>
<p>Enquanto isso, fontes de consulta nunca são de mais, então tenha sempre a mãos um atalho para <a href="http://docs.python.org/">http://docs.python.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeveaux.com/2007/comecando-com-python-1undefined/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

