Tuplas sao objetos imutaveis. Se dermos um `dir(tuple)` no IDLE do Pyton, veremos que so existem 2 metodos considerados publicos -- `count()` e `index()` -- e eles nao servem para modifica-la.Os exemplos desse artigo serao quase todos com os dados abaixo: >>> nome = 'Marta' >>> notas = {'matematica': 8.5} >>> brinquedos = ['mesinha', 'patins'] >>> mesada = 10.00 >>> t = (nome, notas, brinquedos, mesada) >>> t ('Marta', {'matematica': 8.5}, ['mesinha', 'patins'], 10.0) >>> Com tuplas, podemos acessar itens pelo indexador, como fazemos nas listas: >>> t[0] 'Marta' >>> t[1] {'matematica': 8.5} >>> Mas, diferentemente das listas, nao podemos alterar o conteudo de um determinado indice: >>> t[0] = 'qualquer coisa' Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment >>> Mudar o nome (string) ou a mesada (dado numerico) nao muda a tupla: >>> nome = 'Joana' >>> t[0] 'Marta' >>> mesada = 15.00 >>> t[-1] 10.00 >>> E se mudarmos as notas ou os brinquedos? >>> notas['portugues'] = 10.0 >>> brinquedos.append('boneca') >>> t[1] {'matematica': 8.5, 'portugues': 10.0} >>> t[-2] ['mesinha', 'patins', 'boneca'] >>> Opa! A tupla mudou?!Para nos, mudou. Mas para o Python, nao. Porque:1. Eu nao adicionei nenhum item.1. Eu nao subtrai nenhum item.1. Eu nao substitui nenhum item por outro conteudo.Ou seja, nossa tupla continua com os mesmos 4 itens.Dai pode vir a pergunta Como assim, "os mesmos 4 itens", se as notas e os brinquedos tem itens a mais?Em Python, listas sao sequencia mutaveis e dicionarios sao mappings, que sao mutaveis. Entao, no caso de `brinquedos`, **conceitualmente** e a mesma lista, com 1 item a mais. As notas tambem sao representadas pelo mesmo dicionario, com uma chave a mais.Listas e dicionarios podem nos pregar algumas pecas de vez em quando. Leia o artigo [Como copiar uma lista e um dicionario em Python](/2012/11/como-copiar-uma-lista-e-um-dicionario.html) para entende-los melhor.O mesmo comportamento ocorre quando a tupla contem a instancia de uma classe criada por voce: >>> class P: ... def __init__(self, nome): ... self.nome = nome ... def __repr__(self): ... return self.nome ... >>> pessoa = P('Eduardo') >>> a = [1, pessoa] >>> a (1, Eduardo) >>> pessoa.nome = 'Luiz' >>> a (1, Luiz) >>>O ultimo item da lista continua sendo representado pelo mesmo objeto `pessoa`. Conceitualmente, a tupla nao mudou. O que mudou foi o atributo `nome` de `pessoa`.Lembre-se: uma tupla e imutavel, mas seus itens nao precisam ser.Mas se eu realmente quiser mudar, de verdade, um item da tupla? Bem, diretamente nao e possivel. Mas voce pode fazer isso facilmente convertendo a tupla para lista e voltando para o formato original. Usando nosso exemplo do inicio do artigo, seria assim: >>> x = list(t) >>> x[0] = 'Luiza' >>> t = tuple(x) >>> t[0] 'Luiza' >>> Para conhecer mais um pouco, recomendo ler a documentacao oficial sobre os [Tipos Embutidos](https://docs.python.org/3/library/stdtypes.html) do Python. Se voce e iniciante em Python, provavelmente ja ouviu falar em _virtualenv_. Todo mundo aconselha usar, mas para que serve um _virtualenv_? Que problema ele resolve, afinal?O que e um virtualenv?----------------------Em poucas palavras, o virtualenv permite que varias