Programação RPi Python 06: Noções básicas de Python

No tutorial anterior, discutimos a linguagem Python, seus aplicativos, implementações (incluindo CPython, Jython, IronPython e PyPy) e IDEs. Também aprendemos como escrever scripts e módulos Python e como executar scripts Python por meio de um ambiente de desenvolvimento integrado (ou IDLE) e um shell Bash.

Antes de passarmos ao controle de hardware por meio de scripts Python, será útil primeiro ter uma base sólida da linguagem. Portanto, neste tutorial, discutimos os fundamentos da programação Python e aprendemos algumas práticas recomendadas, incluindo o estilo de escrever código em Python.

Embora este seja um curso intensivo, você será capaz de executar scripts Python curtos no Raspberry Pi (RPi). Portanto, mantenha seu Raspbian inicializado e o IDLE aberto. E, caso você note uma tela em branco no monitor ao ligar o desktop RPi, ocasionalmente ele falha ao inicializar alguns dias após a instalação.

Alguns motivos: conexão frouxa do cartão MicroSD ou do cabo HDMI. Se isso ocorrer, reconecte o cartão MicroSD e o cabo HDMI e ligue o RPi em seu desktop novamente. Se isso não resolver o problema, tente reinstalar o Raspbian no cartão MicroSD.

Sintaxe Python
A sintaxe do Python é diferente de outras linguagens de programação. Na maioria das outras linguagens de programação, as instruções (as linhas lógicas de código) são terminadas por um delimitador, como um ponto e vírgula (“;”).

No entanto, Python usa espaços e recuo para manter a estrutura de blocos de um script. Portanto, adicionar um espaço não intencional no início de uma linha (uma linha física no editor de texto) bloqueará o código de forma diferente. Isso significa que os recuos são muito importantes em Python. Às vezes, isso é desanimador ou assustador para desenvolvedores acostumados com outras linguagens.

Em Python, cada linha física de código é interpretada como uma única linha lógica (uma instrução de código), a menos que continue. Se uma linha lógica for muito longa para caber em uma única linha física, a primeira linha poderá ser finalizada com uma barra invertida (“\”). Isso indica que a linha lógica continua na próxima linha física.

Quando uma linha lógica continua para a próxima, qualquer recuo na segunda linha é irrelevante. Mas se a segunda linha for não uma continuação da primeira (porque não há barra invertida no final), isso marca o fim daquela linha lógica. Quando uma linha lógica continua, não deve haver nenhum comentário exceto na última linha física.

Semelhante a outras linguagens de programação, no entanto, um bloco de código em Python é indicado por colchetes (“{“) ou delimitadores “início/fim”. A primeira linha do código não deve ser recuada. Mas em Python, todas as linhas adjacentes recuadas pelo mesmo valor serão identificadas como um bloco de código (como se estivessem entre colchetes).

É recomendado usar apenas espaços ou tabulações para recuar o código em Python, mas evite misturá-los (a versão 3 não permite que isso ocorra). As abas também podem ser tratadas de forma diferente em diferentes editores de texto, por isso é ideal evitá-las. É melhor usar quatro espaços (colunas lógicas 5, 9, 13, etc.).

Se houver um delimitador aberto – como chave (“{“), colchete (“(“) ou parênteses (“(“) em uma linha física, a próxima linha continua automaticamente até que o delimitador de fechamento do mesmo tipo ocorra .

Comentários
Todos os comentários em Python começam com uma hashtag (“#”). Tudo à direita da hashtag, até o final da linha, é tratado como comentário pelo interpretador Python. Os comentários não são processados ​​como linhas de códigos. Em vez disso, são cadeias de texto inseridas no código para fornecer informações úteis a outros programadores.

É recomendado usar comentários generosamente para que seu código seja legível. Esses comentários devem indicar coisas significativas sobre o código sem iterar coisas óbvias.

Por exemplo, um comentário em Python pode ser assim:

# Este script controla a interface de um personagem
# LCD com Raspberry Pi GPIO e gerenciamento de exibição
# string de mensagens nele.

Identificadores
Identificadores são nomes dados a variáveis, constantes, funções, classes, módulos e outros objetos em qualquer linguagem de programação.

Em Python, qualquer identificador deve começar com uma letra (compatível com ASCII) ou sublinhado, que pode ser seguido por mais letras, dígitos ou sublinhados. Caracteres de pontuação não podem ser usados ​​como identificadores.

Os identificadores em Python diferenciam maiúsculas de minúsculas. Por exemplo, “GPIO_status” e “gpio_status” referem-se a objetos diferentes.

Aqui estão alguns identificadores válidos em Python:

LCD_mensagem _display_status LED01
_LED_ON LED_OFF dormir

Estes são exemplos de identificadores inválidos em Python:

01LED LCD@status 123

Palavras-chave
Palavras-chave são palavras reservadas e também não podem ser usadas como identificadores para outros objetos. Python V2 possui 31 palavras-chave.

Eles são:

e como afirmar quebrar
aula continua def del
elif senão exec
finalmente para do global
se a importação for
lambda não ou passar
imprimir aumentar retornar tentar
enquanto com rendimento

Python V3 possui 33 palavras-chave. Eles são:

e como afirmar quebrar
aula continua def del
elif senão falso
finalmente para do global
se a importação for
lambda nenhum não local não
ou passar, aumentar, retornar
verdadeiro tente enquanto estiver com
colheita

Declarações
Instruções são linhas lógicas de código que executam um tipo de operação nos dados.

Em Python, as instruções podem ser simples ou compostas. Instruções simples são linhas lógicas únicas de código que normalmente são uma atribuição de valores a variáveis ​​ou expressões simples. As instruções compostas contêm mais de uma instrução simples agrupada como um bloco de código com a mesma quantidade de recuo.

Cada instrução simples dentro de uma instrução composta é chamada de cláusula. Uma cláusula pode ter um cabeçalho que pode começar com uma palavra-chave e terminar com dois pontos (“:”). O cabeçalho que contém uma cláusula é seguido por outras instruções (ou cláusulas) no bloco e estas são chamadas de corpo do bloco.

Ao contrário de outras linguagens de programação, não existem declarações em Python – apenas instruções simples e compostas.

Programação orientada a objetos
O código em qualquer linguagem de programação é usado para processar dados. Os dados podem ser valores constantes, grupos ordenados e não ordenados de valores constantes ou estruturas de dados mais complexas (como classes e objetos).

Essencialmente, cada tipo de dado possui um tipo. O tipo de dado determina como ele deve ser tratado no código, quais propriedades ele pode ter e quais operações (na forma de operadores, funções e métodos) podem ser realizadas nele.

Um nome de referência acessa cada dado no código. Este nome de referência pode ser um identificador — diferente das palavras-chave e dos identificadores usados ​​neste escopo. Assim, as referências para determinados dados devem ser sempre únicas dentro do mesmo escopo.

As referências que apontam para um dado onde o conteúdo pode ser alterado são chamadas de variáveis. Servidor de variáveis ​​como referências que se ligam a locais de memória onde o conteúdo desse local pode ser alterado no código. As referências que apontam para um dado onde o conteúdo nunca mudará no código são chamadas de constantes.

O valor atribuído a uma referência definida como constante não pode ser alterado uma vez estabelecido.

As declarações de um processo de codificação são o conteúdo das variáveis. Essas afirmações podem ser simples ou compostas. As instruções compostas podem ser utilizadas para tomada de decisão ou alteração da sequência de execução de outras instruções. Mais de uma instrução simples e/ou composta pode precisar ser organizada em blocos reutilizáveis ​​(chamáveis), que são chamados de funções.

Além disso, pode haver grupos ordenados e não ordenados de valores constantes atribuídos a uma variável. Também pode haver estruturas de dados mais complexas onde os valores de dados relacionados e as operações neles são agrupados como uma classe. Normalmente, uma classe representa o tipo de objeto real (como uma classe) definido para representar pessoas.

Qualquer objeto real terá algumas propriedades definidas como atributos em uma classe. Esses atributos são variáveis ​​especiais que se ligam a uma classe específica e representam as propriedades do objeto, que também são representadas pela classe.

Pode haver algumas operações no conteúdo dos atributos. As funções (ligadas à classe) que processam o conteúdo dos atributos da classe são chamadas de métodos.

Instâncias específicas de uma classe são chamadas de objetos (objetos de código). Esses objetos possuem todos os atributos e métodos definidos para sua classe. Os objetos pertencem a classes internas ou definidas pelo usuário. Na programação orientada a objetos, os dados são sempre processados ​​como valores associados às variáveis ​​e atributos dos objetos.

Objetos, classes, tipos de dados e IDs Python
Python também é diferente de outras linguagens na maneira como lida com os dados. Por exemplo, em Python, tudo é um objeto. Isso inclui os valores atribuídos a variáveis ​​ou atributos que são objetos de classes de tipo de dados integradas.

Os tipos de dados são, tecnicamente, classes Python integradas. Quando um valor é atribuído a uma variável ou atributo, o valor se torna o objeto que pertence a uma classe de tipo de dados. Outra maneira de dizer isso: o valor se torna uma instância de uma classe de tipo de dados integrada do Python.

O que isso significa é que em Python não há necessidade de declarar o tipo de dados das referências. Python assume implicitamente o tipo de dados da referência. É por isso que palavras-chave são desnecessárias para declarar tipos de dados em Python.

Outra função interessante do Python são os IDs. Dependendo da implementação e da plataforma, o Python armazena apenas valores únicos em locais de memória. Se duas referências apontarem para o mesmo valor, elas terão o mesmo ID e apontarão para o mesmo local de memória. Python não duplica os mesmos valores (literais), mesmo que estejam vinculados a referências diferentes.

Mutável, imutável, iterável, e iteradores
Os objetos Python podem ser mutáveis ​​ou imutáveis. Ao realizar qualquer operação (por meio de operadores, funções ou métodos) em um objeto imutável, o tipo de dados do valor de retorno da respectiva expressão permanecerá sempre o mesmo do objeto.

Ao realizar operações em objetos mutáveis, o tipo de dados do valor de retorno da respectiva expressão pode ser diferente do tipo de dados do objeto.

Um objeto pode ser iterável, o que significa que o objeto é uma coleção de itens (valores ou outros objetos) que podem ser acessados ​​por índices. O objeto que serve como provedor dos índices para iterar um iterável é chamado de iterador.

Curiosamente, todo iterador é iterável, mas todo iterável pode não ser um iterador.

Literais
As notações para valores constantes de tipos de dados integrados são chamadas de literais. Os literais podem ser inteiros, números de ponto flutuante, números complexos, strings ou bytes. Os literais são objetos Python imutáveis ​​e o valor de retorno de uma expressão para eles tem o mesmo tipo de dados do literal.

Tipos de dados Aulas
Python oferece suporte a todos os tipos de dados fundamentais (números, strings, booleanos, etc.), bem como tipos de dados definidos pelo usuário (classes definidas pelo usuário). Os tipos de dados são classes em Python. Existem muitos tipos de dados disponíveis em Python, incluindo:

Inteiros – pertence ao interno ou longo classe em Python. Eles podem ser números decimais, binários, octais ou hexadecimais.

  • Os valores decimais começam com qualquer dígito diferente de zero, seguido por outros dígitos.
  • Os valores binários começam com 0b, seguido por uma sequência de 0 e 1.
  • Os valores octais começam com 0o, seguidos por uma sequência de dígitos octais (0 a 7). Os valores hexadecimais começam com 0x, seguido por uma sequência de caracteres hexadecimais (0 a 9, A, B, C, D, E e F).

No Python V3, todos os inteiros pertencem ao interno classe porque não há distinção entre o interno e longo. Do Python 3.6 em diante, os inteiros podem incluir sublinhados (“_”) entre dígitos e caracteres para assistência visual, como “0b_0111_1111” é equivalente a “0b01111111”.

Números de ponto flutuante – esses valores pertencem ao flutuador aula. Estes são números decimais que podem conter um ponto decimal, um expoente ou ambos. Em Python, os valores de ponto flutuante geralmente têm precisão de 53 bits.

Números complexos – esses valores pertencem ao complexo aula. Um número complexo pode ter dois valores de ponto flutuante com um “j” ou “J” no meio, ou um valor de ponto flutuante em cada lado de “j” ou “J”. A parte real e imaginária de um objeto complexo que é definido por uma variável chamada “x” pode ser acessado como “x.real” e “x.imag”, respectivamente.

Cordas – estas são uma sequência de caracteres que representam valores de texto. As cordas pertencem ao str classe em Python. Os objetos string podem ser formatados em byte ou Unicode. Python V2 possui codificação ASCII e Python V3 possui codificação Unicode por padrão.

É possível impor diferentes estilos de codificação ao script Python incluindo um comentário de diretiva de codificação na primeira linha do script. O estilo de codificação afeta apenas os caracteres que podem ser usados ​​nas strings e comentários.

Uma diretiva de codificação se parece com isto:

# codificação: utf-8

Em Python, as strings podem ter aspas simples, duplas ou triplas. Também é possível usar um double em uma string entre aspas simples e um single em uma string entre aspas duplas sem uma sequência de escape. Se um single tiver que ser usado em uma string entre aspas simples e double tiver que ser usado em uma string entre aspas duplas, ele deverá ser “escapado” por uma barra invertida como segue:

“Ele disse”me traga um copo de água””
'Estou indo para o escritório'

Uma string também pode abranger mais de uma linha física no código usando a barra invertida da seguinte maneira:

“Este é um muito, muito, muito, \
texto muito longo”

Para incluir uma nova linha em uma string, a sequência de escape da nova linha (\n) deve ser usada assim:

“Esta é uma linha. \n Esta é a segunda linha”

Para strings com múltiplas linhas, é melhor usar strings entre aspas triplas. Em strings entre aspas triplas, as quebras de linha são tratadas como caracteres de nova linha. Aqui está um exemplo:

“””Esta é uma linha.
Esta é a segunda linha.
Esta é a terceira linha.”””

Uma string entre aspas simples ou duplas não pode conter aspas sem escape – a linha termina ou apresenta barras invertidas. Uma string entre aspas triplas não pode conter apenas uma barra invertida sem escape. Em uma string entre aspas triplas, se uma barra invertida for seguida por uma nova linha, a barra invertida e o caractere de nova linha serão ignorados.

Para incluir barra invertida, aspas, finais de linha, tabulações ou caracteres especiais em um objeto string, certifique-se de usar as sequências de escape.

Python permite estas sequências de escape em strings:

Sequência de fuga Literal de string
\ Barra invertida e nova linha ignoradas
\\ Barra invertida ( )
\' Citação única (')
\” Citação dupla (“)
\a Campainha ASCII
\b Retrocesso ASCII
\f Formulário ASCII
\n Alimentação de linha ASCII
\r Retorno de transporte ASCII
\t Guia Horizontal ASCII
\v Guia Vertical ASCII
\ooo Personagem com vale octal ooo
\xhhh Caractere com valor hexadecimal hh
\uHHH Caractere Unicode com valor hexadecimal HHHH
\uHHHHHHH Caractere Unicode com valor hexadecimal HHHHHHHH
\N{nome} Caractere Unicode com nome Unicode padrão

Cordas brutas – Estas são strings entre aspas ou aspas triplas precedidas por “r” ou “R” antes da aspa inicial. Em strings brutas, as sequências de escape não são interpretadas. Se as sequências de escape forem incluídas em uma string bruta, elas se tornarão parte da string sem interpretação.

Além disso, uma string bruta não pode terminar com um número ímpar de barras invertidas seguidas por uma aspa final. Se isso ocorrer, a aspa final terá escape e isso resultará em um erro de sintaxe. As strings brutas são úteis quando um valor de string tem muitas barras invertidas.

Alguns exemplos válidos de strings brutas são:

r”\\” (equivalente a \\)
R'Olá\n' (equivalente a Olá\n)

Alguns exemplos inválidos de strings brutas são os seguintes:

r'\'
r'\\\'
R”Olá\n\”

No próximo tutorialcontinuaremos esta discussão sobre os fundamentos da linguagem de programação Python.

Retour au blog

Laissez un commentaire

Les commentaires doivent être approuvés avant publication.