|
|
# WIP - Work in progress não é recomendável ler ainda
|
|
|
Python é provavelmente a linguagem principal do projeto. Foi escolhida por ser uma linguagem de fácil aprendizado e bastante difundida. Ainda, em conjunto com a biblioteca pandas, substituia muito bem o uso da linguagem R e facilitava a integração das análises em um sistema web. Antes da descoberta do pandas as análises seriam feitas em R e os resultados seriam "colados" com PHP para a construção do sistema WEB.
|
|
|
|
|
|
Python é provavelmente a linguagem principal do projeto. Foi escolhida por ser uma linguagem de fácil aprendizado e bastante difundida. Ainda, em conjunto com a biblioteca pandas, substituia muito bem o uso da linguagem R e facilitava a integração das análises em um sistema web. Antes da descobertas do pandas as análises seriam feitas em R e os resultados seriam "colados" com PHP para a construção do sistema WEB.
|
|
|
|
|
|
A biblioteca pandas possui funcionalidades semelhante a da linguagem R com maior velocidade. Destaque para a estrutura [DataFrame](http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.DataFrame.html) da biblioteca pandas que é análoga ao [data.frame](https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/data.frame) que é principal ferramenta da linguagem R.
|
|
|
A biblioteca pandas possui funcionalidades semelhantes a da linguagem R com maior velocidade. Destaque para a estrutura [DataFrame](http://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.DataFrame.html) da biblioteca pandas que é análoga ao [data.frame](https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/data.frame) que é principal ferramenta da linguagem R.
|
|
|
|
|
|
|
|
|
## Funções de linguagem de alto nível
|
... | ... | @@ -32,12 +30,12 @@ Funções *built-in* são funções (e estruturas de dados) que não precisam se |
|
|
|
|
|
Bibliotecas externas são as que devem ser instaladas com `pip` antes de usadas. Elas não fazem parte da linguagem em si, não são mantidas pela comunidade e têm ciclos de lançamento diferente.
|
|
|
|
|
|
Essas bibliotecas também chamadas pacotes em geral são mantidas pelos autores e são muito menos estáveis e confiáveis do que as funções da bibliotecas padrão.
|
|
|
Essas bibliotecas, também chamadas pacotes, em geral são mantidas pelos autores e são muito menos estáveis e confiáveis do que as funções da bibliotecas padrão.
|
|
|
|
|
|
|
|
|
## Dicas
|
|
|
|
|
|
- A versão atual do python é a versão 3. A versão 2 ainda é bastante usada apesar de estar em processo avançado de abandono pela comunidade de suporte. Use a versão 3 (mais especificamente a 3.5), se estiver encontrando muitos exemplos que usam a versão 2 [leia mais profundamente](http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html) sobre as diferenças delas para não copiar código que não funciona na versão nova. A principal diferença é que na versão 2 o `print` não usava parênteses.
|
|
|
- A versão atual do python é a versão 3. A versão 2 ainda é bastante usada apesar de estar em processo avançado de abandono pela comunidade de suporte. Use a versão 3 (mais especificamente a 3.5). Se estiver encontrando muitos exemplos pela web de códigos que usam a versão 2 [leia mais profundamente](http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html) sobre as diferenças delas para não copiar código que não funciona na versão nova. A principal diferença é que na versão 2 o `print` não usava parênteses.
|
|
|
- Em geral o comando `python` do linux vai chamar o python2. Se estiver executando código fora do virtualenv (veja sobre pipenv abaixo) use `python3`.
|
|
|
- SEMPRE use o pipenv, é só digitar `pipenv shell` antes de começar a mexer no projeto, e `exit` quando não for mexer mais. Essa é uma das garantias de que você está executando o projeto com todas as dependências corretas.
|
|
|
|
... | ... | @@ -48,7 +46,7 @@ Essas bibliotecas também chamadas pacotes em geral são mantidas pelos autores |
|
|
- [PEP8](https://www.python.org/dev/peps/pep-0008/) guia de formatação de código para códigos python
|
|
|
- [Exercícios do Google](https://www.python.org/dev/peps/pep-0008/) é um pequeno conjunto de exercícios de linguagem Python. Faça todos os exercícios do lado esquerdo. É em Python2, mas serve bastante bem para testar a lógica da linguagem. Se quiser fazer os curso que vem junto é por sua conta, só preste atenção ao detalhe do python 2. Perceba que ele usa um modelo de checagem do resultado parecido com os frameworks de teste citados mais a frente. Sob demanda, podemos migrar para os exercícios para Python3 para ajudar os calouros.
|
|
|
- conheça as [funções built-in](https://docs.python.org/3/library/functions.html) da linguagem.
|
|
|
- Não é necessário conhecer toda a [biblioteca padrão](https://docs.python.org/3/library/index.html) do Python para ter proficiência na linguagem, mas alguns módulos são importantes e deveriam ser conhecimento base para todos. Abaixo estão listados alguns desses módulos e outros que têm alguma importância no projeto.
|
|
|
- Não é necessário conhecer toda a [biblioteca padrão](https://docs.python.org/3/library/index.html) do Python para ter alguma proficiência na linguagem, mas alguns módulos são importantes e deveriam ser conhecimento base para todos. Abaixo estão listados alguns desses módulos e outros que têm alguma importância no projeto.
|
|
|
- [collections](https://docs.python.org/3/library/collections.html) estruturas de dados
|
|
|
- [itertools](https://docs.python.org/3/library/itertools.html) funções que facilitam percorrer estruturas
|
|
|
- [math](https://docs.python.org/3/library/math.html) módulo básico de matemática
|
... | ... | @@ -64,6 +62,6 @@ Essas bibliotecas também chamadas pacotes em geral são mantidas pelos autores |
|
|
- [IPython](https://ipython.org/) é um shell/console melhorado para python. Também se integra bem com o comando `python manage.py shell`
|
|
|
- [Jupyter Notebook](http://jupyter.org/try) é como um console web. É provavelmente a melhor ferramenta para testar funções tão complexas quanto as análises do projeto.
|
|
|
- [PyCharm](https://www.jetbrains.com/pycharm/) da JetBrains é uma [IDE](https://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado) para desenvolvimento em python. Oferece *autocomplete* de código, checagem de erros de palavras em inglês, destaca código inútil, etc. Tem a versão community mas também oferece a versão professional para estudantes (depois de algumas comprovações).
|
|
|
- [Coala](https://coala.io/) é um [lint](https://en.wikipedia.org/wiki/Lint_(software)) configurável para várias linguagens. Possui ferramentas para correção interativa de problemas.
|
|
|
- [Coala](https://coala.io/) é um [lint](https://en.wikipedia.org/wiki/Lint_(software)) configurável para várias linguagens. Possui ferramentas para correção interativa de problemas entre outras funcionalidades.
|
|
|
|
|
|
|