Python Brasil
25.7K subscribers
587 photos
11 videos
15 files
3.53K links
Canal para compartilhamento de links, cursos vagas e eventos sobre Python.

Links, contato e freelas: https://linktr.ee/python.brasil

@laenderoliveira
Download Telegram
Presente para o feriadão de carnaval <3

Iniciamos a publicação dos vídeos da Python Brasil 12 - Florianópolis.... https://t.co/ZswIt3ryKr
Forwarded from Fabricio Biazzotto
#DICA
Se estiver portando um código do C/C++ para o Python (ou MicroPython), tome cuidado com a forma como lida com o overflow! No Python todos os números são do tipo signed integer ou floating point, e possuem um tamanho arbitrário. Isso é bom quando você precisa de um valor numérico e não quer se preocupar com memória ou performance. No Python, um número pode possuir qualquer valor e você nunca precisará decidir como ele será armazenado, como seria feito no C/C++. O ruim disto é que, quando você precisar restringir o número a um tamanho específico, terá que fazer algum truque para isso.

Por exemplo, considere o seguinte trecho de código do Arduino, e seu similar feito em Python:

// Arduino code:
uint8_t value = 250;
value += 10;
Serial.print("Arduino value is: ");
Serial.println(value, DEC);

# Python code:
value = 250
value += 10
print("Python value is: {}".format(value))

Você consegue adivinhar qual será a saída de cada um? A resposta pode surpreender você:

Arduino value is: 4
Python value is: 260

Caramba, respostas totalmente diferentes para o mesmo código simples de operação matemática! Por que isso? Acontece que o Python, de forma inteligente, usou seu signed integer de tamanho arbitrário, e facilmente conseguiu adicionar 10 a 250, resultando em 260. Por outro lado, o código do Arduino definiu explicitamente o tipo numérico como 8-bit unsigned integer, que não pode ir além do valor 255. Quando ultrapassa o valor máximo, ele retorna o contador para 0 e reinicia a contagem.

Se você precisa lidar com diversos códigos em C/C++, ou do Arduino, é muito comum se deparar com algoritmos e operações matemáticas que dependam deste comportamento. Então, como obter o mesmo comportamento no Python? Uma solução simples para isso seria utilizar o operador de bitwise AND (`&`) para extrair a quantidade de bytes que você quer de um número. Por exemplo, para mudar o código Python acima para que se comporte como o código do Arduino, você pode escrever:

# Python code with math that behaves like an 8-bit unsigned integer:
value = 250
value += 10
value &= 0xFF # This magic step uses the bitwise AND operator to extract the low 8 bits of the number.
print("Python value is: {}".format(value))

Agora, quando você rodar este código, o resultado será o mesmo do Arduino:

Python value is: 4

A operação &= converteu o valor inteiro em um novo valor que possui somente os 8-bits menos significantes do original (mascarado através do valor hexadecimal 0xFF). Esta é a chave para se converter um valor numérico do Python em um valor do tipo unsigned integer de tamanho fixo. Utilize este truque se estiver portando código do C/C++, ou do Arduino, e constatar que utiliza valores numéricos do tipo unsigned integer!

Fonte: Truques e dicas dos experts da Adafruit!
@ramalhoorg: "Agradecemos a Rubens Prates da Editora Novatec por ter cedido gentilmente os arquivos com o texto integral e as figuras de Pense em #Python, publicado sob licença da O'Reilly Media." https://penseallen.github.io/PensePython2e/
Se você já desejou contribuir com o mundo do Free or Open Source Software mas nunca se sentiu capaz, esse episódio é pra você!Baixe o episódio (http://archive.org/download/HNC.v1.5-Contribuindo-com-o-Mundo-FOSS/HNC.v1.5-Contribuindo-com-o-Mundo-FOSS) e leia o shownotes (http://mindbending.org/pt/hack-n-cast-v15-contribuindo-com-o-mundo-foss)
Antes de entrar no assunto do titulo vou contextualizar o porque estou escrevendo esse blogpost.Continue reading on Medium » (https://medium.com/@avelino0/qual-o-glamour-em-ser-ceo-25bfcb2cf45a?source=rss-811ae290c544------2)
Eai Galera! Tudo bem?
Pessoal que esta procurando oportunidades!
Acabamos de selecionar algumas oportunidades e você não pode ficar fora dessa! Acesse www.pyjob.info e confira as vagas em aberto.
Eles prometeram e ai está, primeira conferência Python organizada pelo GrupyES, corre e se inscreva que vai... https://t.co/aCzJJ8bzP8