Isso funciona? É pythonico? Pode ser um caminho? Qual a diferença do módulo typing pra lib mypy?
Python é uma linguagem de tipagem forte e dinâmica(ou será que ainda é?), mas desde sua versão 3.5, com o módulo typing, é possível utilizar uma tipagem mais explícita sem alterar todo código. mypy é um projeto que nos possibilita também utilizar tipagem estática de maneira similar ao typing, embora o mypy seja mais antigo e também suporta Python 2 enquanto o módulo typing funciona apenas com Python 3.
Vamos discutir, ver exemplos de aplicação, mostrando tanto o uso com a biblioteca mypy quanto com o módulo nativo typing(python >= 3.5), bem como (des)vantagens e onde/quando usar, ou não, tipagem estática.
Aula 12: Barreira de potencial: Exemples e aplicaçõesAdriano Silva
Discutir alguns exemplos e aplicações do efeito-túnel que podem ser modelados pela barreira de potencial, tais como o microscópio de tunelamento, a emissão de partículas alfa, a fusão nuclear e a emissão de elétrons por metais frios.
Epaule du Surfeur - Benoit Hogedez - KinesitherapeuteGuillaume Barucq
Prévention des tendinopathies de la coiffe des rotateurs par Benoît Hogedez, kinésithérapeute.
Manuel publié sur le site Surf Prévention : https://blog.surf-prevention.com/2010/12/08/epaule-du-surfeur-les-conseils-du-kinesitherapeute/
Aula 12: Barreira de potencial: Exemples e aplicaçõesAdriano Silva
Discutir alguns exemplos e aplicações do efeito-túnel que podem ser modelados pela barreira de potencial, tais como o microscópio de tunelamento, a emissão de partículas alfa, a fusão nuclear e a emissão de elétrons por metais frios.
Epaule du Surfeur - Benoit Hogedez - KinesitherapeuteGuillaume Barucq
Prévention des tendinopathies de la coiffe des rotateurs par Benoît Hogedez, kinésithérapeute.
Manuel publié sur le site Surf Prévention : https://blog.surf-prevention.com/2010/12/08/epaule-du-surfeur-les-conseils-du-kinesitherapeute/
Aplicar o formalismo quântico ao caso de um potencial V(x) que tem a forma de um poço infinito: o potencial é infinito para x < –a/2 e para x > a/2, e tem o valor 0 para –a/2 < x < a/2.
Con un approccio pratico, e ricco di esempi semplici per illustrare bene i concetti, impara le basi del linguaggio di scripting Bash, ormai divenuto uno standard de facto in termini di scripting di shell (Shell Scripting).
La presentazione si compone di 12 lezioni / capitoli:
1 - Introduzione
2 - Primi passi
3 - Variabili
4 - Array
5 - Aritmetica
6 - Test
7 - Costrutti condizionali
8 - Cicli iterativi
9 - Funzioni
10 - Quoting
11 - Terminare uno script
12 - Debugging
Per un totale di 98 diapositive
Apresentação feita para introduzir Python a programadores de outras linguagens, mostrando alguns dos recursos da linguagem, programação funcional, orientação a objetos, list comprehensions, splicing, metaprogramação, dentre outras funcionalidades.
Código dos exercícios: https://github.com/BrunoCodeman/dojo_python
Python é uma linguagem de programação de altíssimo nível.
Fácil de aprender, fácil de dar manutenção, direta e objetiva.
Escreva menos pra se fazer mais :D
Material de evangelização ;)
Aplicar o formalismo quântico ao caso de um potencial V(x) que tem a forma de um poço infinito: o potencial é infinito para x < –a/2 e para x > a/2, e tem o valor 0 para –a/2 < x < a/2.
Con un approccio pratico, e ricco di esempi semplici per illustrare bene i concetti, impara le basi del linguaggio di scripting Bash, ormai divenuto uno standard de facto in termini di scripting di shell (Shell Scripting).
La presentazione si compone di 12 lezioni / capitoli:
1 - Introduzione
2 - Primi passi
3 - Variabili
4 - Array
5 - Aritmetica
6 - Test
7 - Costrutti condizionali
8 - Cicli iterativi
9 - Funzioni
10 - Quoting
11 - Terminare uno script
12 - Debugging
Per un totale di 98 diapositive
Apresentação feita para introduzir Python a programadores de outras linguagens, mostrando alguns dos recursos da linguagem, programação funcional, orientação a objetos, list comprehensions, splicing, metaprogramação, dentre outras funcionalidades.
Código dos exercícios: https://github.com/BrunoCodeman/dojo_python
Python é uma linguagem de programação de altíssimo nível.
Fácil de aprender, fácil de dar manutenção, direta e objetiva.
Escreva menos pra se fazer mais :D
Material de evangelização ;)
Palestra realizada no dia 10/02/2011 no X Encontro do Grupo de Usuários de Python na Livraria Cultura (Recife -Pernambuco). Palestra com o título: "Conhecendo Python e por que ela importa ? "
Lecture presented at February 09th at X Meeting of Pernambuco Python User Group at Livraria Cultura (Recife - Pernambuco - Brazil) with the title: ' Meeting Python and why does it care ? "
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
Apresentação utilizada na palestra realizada no dia 08/10/2014 na faculdade Meta, contendo uma introdução sobre a linguagem de programação Python, suas aplicações, empresas que utilizam e exemplos de uso aplicado a algumas situações, mostrando o potencial desta linguagem, que vai desde o acesso a bancos de dados, geração de sites, aplicações desktop e web multiplataformas (windows, linux, freebsd, MacOS), web, mineração de dados, inteligência artificial, até o desenvolvimento de aplicações mobile (android, iOS).
Contribuir com o django é mais simples do que voce imagina!Vinta Software
Se você conhece ou trabalha com o Django e deseja saber como começar a contribuir está palestra é para você!
Juntos vamos solucionar um bug do django e fazer nossa primeira contribuição!
Para quem está começando a desenvolver sistemas e deseja fazer contribuições open source, as vezes é difícil saber por onde começar.
A idéia de contribuir com uma grande lib que você adora parece um pouco assustadora?
Eu vou mostrar passo a passo, como contribuir com o django de forma simples!
Usaremos um bug previamente resolvido por mim, para explicar o passo a passo.
Django’s Club: Como fazer um sistema de assinaturaVinta Software
Clube do vinho, Clube da cerveja, Clube do livro, Clube Geek, Spotify, Netflix, SmartFit.
Afinal, por que tantas empresas entram no mercado do sistema de assinatura? Sinceramente, não sei exatamente, porém sei bem como desenvolver um com o framework Django!
Nessa palestra irei apresentar alguns prós e contras do Subscription Model, mostrando algumas particularidades desse modelo, cuidados que se deve ter e erros técnicos que cometi ao desenvolver sistemas desse tipo.
Trabalhar como desenvolvedor de software pode ser um pouco frustrante, as vezes por estar preso a um projeto, as vezes por causa da linguagem que é usada, mas principalmente quando você está em um lugar que não tem nada a ver com você.
Nessa palestra eu vou falar sobre a minha experiência saindo de uma grande empresa tradicional para uma empresa ágil e como essa mudança me mostrou que algumas coisas que muitas empresas negligênciam são na verdade, extremamente importantes. Coisas como testes, continuous integration, pair programming, code review, open-source, como adaptar metodologias ágeis a sua realidade, python (é claro) e django, um framework que faz o desenvolvimento de uma aplicação web parecer simples
Não é fácil escrever uma biblioteca confortável de usar. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.
Ainda bem que muitos outros programadores já erraram antes de nós. E existem em Python e fora dele diversos exemplos de boas libs nas quais podemos nos inspirar.
Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:
- Alta Consistência
- Muitos dados puros
- Baixa Verbosidade
- Respeito ao Principle of Least Astonishment
- Alta Extensibilidade
- Baixa Retenção
- Vários níveis de abstrações
- Alta granularidade
- Interesses claros e separados
- Pythonica
Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.
2. Quem sou eu
● Carlos Coelho
○ Gama - DF/Recife - PE
○ Engenharia da Software - UnB
○ Torcedor do maior campẽao do DF Gama
○ 5 anos como desenvolvedor
@chocoelho
github.com/chocoelho
6. 526
xpto: int # sem inicialização
xpto = 5 # passa na checagem
xpto: int = ‘a’ # linter acusa erro
# mas roda normal
sane_world: bool
if 2 + 2 == 4:
sane_world = True
else:
sane_world = False
Na prática
484
def greetings(name: str) -> str:
return “hello” + name
# funciona em Python 2 também!
def greetings(name):
# type: (str) -> str
return “hello” + name
# pode-se utilizar dicts
xpto: Dict[str, int] = {}
# ou até listas
xpto: List[int] = []
7. PEP 484 tl;dr
● Sintaxe padrão
● Facilita a análise estática e refatoração
● Potencial para checagem de tipos em runtime
● Notação padrão para IDEs/editores de texto
● Checagem de tipos em runtime por terceiros
8. PEP 526 tl;dr
● Type comments tem algumas desvantagens
○ Highlight de comentários != highlight type annotations
○ Não há como informar o tipo de uma variável indefinida, é preciso inicializá-la
com None
○ Variáveis anotadas em um condicional(if/else) podem dificultar a leitura
● Sintaxe no core da linguagem
● Sintaxe dedicada pode levar a duck-typing estático
● Type annotations != declaração de variáveis
11. Benefícios
● Facilita entendimento e manutenção do código
● Facilita encontrar bugs em codebases grandes
● Melhoria em suporte para auto-complete e análise de código por
IDEs/editores de texto
● Utilizar tipagem dinâmica e estática ao mesmo tempo
15. Ainda não é um mar de rosas...
● Funciona em runtime, mas falha na análise estática
● Problema real:
○ Callable[[Union[bytes, bytesarray], int] e Callable[[bytes], None]
são compatíveis, mas o linter não concorda :(
■ Resolverá com PEP 544
def download_euipo_file(ftp_conn: FTP, filepath: str) ->
None:
euipo_file = BytesIO()
ftp_conn.retrbinary(“RETR {}”.format(filepath),
euipo_file.write)
16. Se caminha como um pato, nada como um pato e grasna como um pato,
provavelmente é um pato.
Duck Typing
class Pato:
def quack(self):
print("Quack, quack!")
def fly(self):
print("Flap, Flap!")
class Pessoa:
def quack(self):
print("I'm Quackin'!")
def fly(self):
print("I'm Flyin'!")
def na_floresta(mallard):
mallard.quack()
mallard.fly()
def main():
na_floresta(Pato())
na_floresta(Pessoa())
>>> main()
>>> Quack, quack!
>>> Flap, Flap!
>>> Quackin'!
>>> Flyin'!
21. Alguns projetos em andamento
● API Star
○ https://github.com/tomchristie/apistar
● pydantic
○ https://github.com/samuelcolvin/pydantic
22. Outras referências
● What is Gradual Typing
○ https://wphomes.soic.indiana.edu/jsiek/what-is-gradual-typing/
● Static types in Python, oh my(py)!
○ http://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/
● Proposal: Use mypy syntax for function annotations - BDFL
○ https://mail.python.org/pipermail/python-ideas/2014-August/02861
8.html
● Adding Optional Static Typing to Python - BDFL
○ http://www.artima.com/weblogs/viewpost.jsp?thread=85551
23. Outras referências
● Jukka Lehtosalo, David Fisher Static Types for Python PyCon 2017
○ https://www.youtube.com/watch?v=7ZbwZgrXnwY
● Guido van Rossum - Type Hints for Python 3.5 EuroPython 2015
○ https://www.youtube.com/watch?v=Yqnrfa5ri7E
● Pycon UK 2016: Python and static types: Let's use mypy!
○ https://www.youtube.com/watch?v=ddKQJTzgELw
● What Python can learn from Haskell? EuroPython 2014
○ http://bob.ippoli.to/python-haskell-ep2014/#/title