sábado, 5 de dezembro de 2020

Fatos interessantes sobre strings em Python

Strings são imutáveis

Depois que uma string é definida, ela não pode ser alterada.

# Programa para mostrar
# que strings não podem ser alteradas

a = 'Acervo Lima'

# mostra o valor de a
print(a) 

# tenta alterar o terceiro elemento da string
a[2] = 'E' # isso vai lançar o erro TypeError
print(a)

Resultado:

Acervo Lima
Traceback (most recent call last):
  File "/home/thor/Documentos/teste.py", line 10, in 
    a[2] = 'E' # isso vai causar um erro
TypeError: 'str' object does not support item assignment

Mas o código abaixo funciona bem.

# programa para mostrar que uma string
# pode ser concatenada com outra string

a = 'Acervo '

# mostra o conteúdo de a
print(a)
a = a + 'Lima'

print(a) # tudo funciona como deveria

Resultado:

Acervo 
Acervo Lima

No segundo programa, o intérprete faz uma cópia da string original e então trabalha nela e a modifica. Portanto, a expressão a = a + 'Lima' não muda a string, mas reatribui a variável a um novo valor (o resultado da concatenação das duas strings).

Entenda o uso da função id().
A função id() é usada para retornar a identidade de um objeto.

# script python para mostrar que
# as duas string tem o mesmo id

string1 = "Hello"
string2 = "Hello"

print(id(string1)) 
print(id(string2)) 

Resultado:

140595101158640
140595101158640

string1 e string2 apontam para o mesmo objeto ou mesmo local. Agora, se alguém tentar modificar qualquer um dos resultados da string, os resultados serão diferentes.

# Modificando a string

string1 = "Hello"

# id da string string1 
print(id(string1)) 

string1 += "World"
print(string1) 

# id da string modificada string1 
print(id(string1))

Resultado:

140495269678192
HelloWorld
140495269678832

String1 é modificado, o que contradiz o fato de que as strings são imutáveis, mas a identidade antes e depois da modificação são diferentes. Isso significa que um novo objeto da string1 é criado após a modificação, o que confirma o fato de que as strings são imutáveis, pois nenhuma mudança foi feita no objeto anterior da string1 em vez disso uma nova é criada.

Três maneiras de criar strings

Strings em Python podem ser criadas usando aspas simples, aspas duplas ou aspas triplas.

As aspas simples e duplas funcionam da mesma forma para a criação da string. Por falar em aspas triplas, elas são usadas quando temos que escrever uma string em várias linhas e imprimir como está, sem usar nenhuma sequência de escape.

# script python parar criar
# strings de três modos diferentes
# e concatenalas 

# string com aspas simples
a = 'Acervo'

# string com aspas duplas
b = " Lima"

# string com aspas triplas
c = ''' Acervo Lima
o maior acervo de de tutoriais '''

d = '''Ele disse, "É armadilha"'''

print(a)
print(b)
print(c)
print(d)

# concatenando strings criadas
# com aspas simples, duplas e triplas
print(a + b + c) 

Resultado:

Acervo
 Lima
 Acervo Lima
o maior acervo de de tutoriais 
Ele disse, "É armadilha"
Acervo Lima Acervo Lima
o maior acervo de de tutoriais

Como imprimir aspas simples ou aspas duplas na tela?

Podemos fazer isso das duas maneiras a seguir:

  • O primeiro é usar o caractere de escape para exibir a citação adicional.
  • A segunda maneira é usando aspas combinadas, ou seja, quando queremos imprimir aspas simples, usando aspas duplas como delimitadores e vice-versa.

Exemplo:

print("Olá, senhor Alberto") 

# usando o caracter de escape
print("Ele disse, \"Bem-vindo ao Acervo Lima\"")

print('Tão feliz em estar aqui')

# Usando aspas diferentes
print ('Ele esta procurando pelo Billy "the Kid"')                

Resultado:

Olá, senhor Alberto
Ele disse, "Bem-vindo ao Acervo Lima"
Tão feliz em estar aqui
Ele esta procurando pelo Billy "the Kid"

Como imprimir o caractere de escape?

Se houver a necessidade de imprimir o caractere de escape (\), então, se o usuário mencioná-lo em um interpretador de string, pensará nele como um caractere de escape e não o imprimirá. Para imprimir o caractere de escape, o usuário deve usar o caractere de escape antes de '\' conforme mostrado no exemplo.

# imprime o caractere de escape
print ("\\ barra invertida")

Resultado:

\ barra invertida

Artigo escrito por Arpit Agarwal, melhorado por tuhinpaul e traduzido por Acervo Lima de Interesting facts about strings in Python | Set 1

0 comentários:

Postar um comentário