Python para iniciantes – Strings (Objetos Imutáveis)

“Python para Iniciantes”, nesta série de posts vamos abordar um pouco sobre essa linguagem incrível que é o Python e que mudou para melhor meu dia dia como desenvolvedor WEB e também a de milhares de pessoas que querem e precisam entregar projetos de qualidade em prazos relativamente curtos. A intenção dessa aula, é apresentar ao estudante uma visão de como trabalhar como Strings em Python, então vamos lá: Tudo em Python é objeto, inclusive as strings:

No exemplo acima o tipo da variável my_first_string é str, que é o tipo que representa strings em Python. Em Python Strings são imutáveis. O que é isso? Objetos imutáveis são aqueles que não podem ser alterados, ou seja, esses mantém seu estado após criados e quando existe a necessidade de serem alterados eles se multiplicam, vamos a um expemplo:

No exemplo acima não foi possível atribuir o valor “A” na sexta posição da string “menino“, pois como o erro lançado nos diz: “O tipo string não suporta atribuição de item”, portanto não é possível alterar apenas uma posição da variável “va“. Para tal precisariamos atribuir novamente o valor da variável va:

Resumindo: qualquer operação em uma string, sempre gera um novo objeto e isso também vale para os tipos int, float, long, complex, tuple … Tendo em mente que uma nova string será gerada a cada operação, devemos tomar cuidado com coisas assim:

Pois dessa forma o Python vai concatenar as strings assim (((“muitas” + “strings”) + “para”) + “concatenar”), de duas em duas, gerando mais processamento. Portanto o jeito pythonico de se fazer é utilizando o método join(), que concatena tudo de uma única vez, assim:

Como retornar o tamanho de uma string?

É bem tranquilo, basta utilizar a função built-in len().

Como retornar uma parte da string (substring) em Python?

A sintaxe para retornar o pedaço de uma string é nome[START:END:STEP]
Mas antes de começar vamos entender a diferença entre Python índices(index) e slices.
Índices(index) enumeram os elementos enquando slices enumeram os espaços entre os elementos. A imagem abaixo pode explicar melhor:

slicing python

Na sintaxe nome[START:END]
START reflete as duas primeiras linhas da imagem acima
, que equivale a posição real, iniciando em zero da esquerda para direita e em -1 da direita para a esquerda. Portanto falamos que o índice START é fechado.
END reflete as duas últimas linhas da imagem acima
, que equivale a (posição desejada - 1) e por isso falamos que o índice END é aberto.

Por índice:
nome[index] # caracter que está na posição index, que equivale à nome.__getitem__(index)

Por slicing:
nome[start:end]
# caracteres que comecem da posição start até end-1
nome[start:] # caracteres que comecem da posição start e vão até o fim
nome[:end] # caracteres que comecem da posição 0(do início) até end-1
nome[:] # caracteres que comecem da posição 0 até o fim. Faz uma cópia da string

Indices negativos também são permitos

Por índice:
nome[-1]
# caracteres começam de trás para frente, onde -1 é o último item da string.

Por slicing:
nome[-2:] # caracteres que comecem do penúltimo até o fim da string
nome[:-2] # pega todos os caracteres menos os dois últimos.

Temos também os passos (steps)

a[start:end:step] # caracteres que comecem da posição start até end-1, onde step é um valor numérico e inteiro que indica o passo, por exemplo:
nome[:5:2] # caracteres que comecem da posição 0 até 5-1, pulando de 2 em 2

Alguns métodos interessantes do objeto String:

Obrigado e até a próximo post :)

  • Asari Schneider

    Obrigado! Graças ao seu post consegui fixar o conceito :D

    • Mateus Pádua

      Valeuuuuuu, eu que agradeço, abraços ;)