Inscreva-se em minha Newsletter
Se você não sabe nada sobre Python, confira os primeiros passos no Python.
Criando variáveis e atribuindo valores no Python
Para criar uma variável no Python, tudo o que você precisa fazer é especificar o nome da variável e atribuir um valor a ela.
<variable name> = <value>
Python usa = para atribuir valores a variáveis. Não há necessidade de declarar uma variável antes (ou atribuir um tipo de dado a ela), ao atribuir um valor a uma variável, a variável se inicializa com esse valor. Não há como declarar uma variável sem atribuir um valor inicial a ela.
# Integer
a = 2
print(a)
# Saída: 2
# Integer
b = 9223372036854775807
print(b)
# Saída: 9223372036854775807
# Ponto flutuante
pi = 3.14
print(pi)
# Saída: 3.14
# String
c = 'A'
print(c)
# Saída: A
# String
name = 'John Doe'
print(name)
# Saída: John Doe
# Boolean
q = True
print(q)
# Saída: True
# Valor vazio ou tipo de dados nulo
x = None
print(x)
# Saída: None
A atribuição de variáveis funciona da esquerda para a direita. Portanto, o exemplo a seguir apresentará um erro de sintaxe.
0 = x
=> Output: SyntaxError: can't assign to literal
Você não pode usar os comandos (keywords) do python como o nome de uma variável. Você pode ver a lista de keywords usando o seguinte comando:
import keyword
print(keyword.kwlist)
Regras para nomeação de variáveis:
Os nomes das variáveis devem começar com uma letra ou um underline:
x = True # válido
_y = True # válido
9x = False # começando com um número
=> SyntaxError: invalid syntax
$y = False # começando com um símbolo
=> SyntaxError: invalid syntax
O restante do nome da variável pode consistir em letras, números e underlines:
has_0_in_it = "válido"
Os nomes diferenciam maiúsculas de minúsculas:
x = 9
y = X*5
=>NameError: name 'X' is not defined
Embora não seja necessário especificar um tipo de dado ao declarar uma variável no Python, enquanto aloca o espaço necessário na memória para a variável, o interpretador do Python escolhe automaticamente o tipo interno mais adequado para ela:
a = 2
print(type(a))
# Saída: <type 'int'>
b = 9223372036854775807
print(type(b))
# Saída: <type 'int'>
pi = 3.14
print(type(pi))
# Saída: <type 'float'>
c = 'A'
print(type(c))
# Saída: <type 'str'>
name = 'John Doe'
print(type(name))
# Saída: <type 'str'>
q = True
print(type(q))
# Saída: <type 'bool'>
x = None
print(type(x))
# Saída: <type 'NoneType'>
Agora que você conhece os conceitos básicos de atribuição, vamos falar sobre o que realmente interessa.
Quando você usa =
para fazer uma operação de atribuição, o que está à esquerda de =
é um nome
para o objeto
à direita. Finalmente, what = does
é atribuir a referência do objeto
à direita e o nome
à esquerda.
Exemplo:
a_name = an_object # "a_name" agora é um nome para a referência ao objeto "an_object"
Portanto, a partir de muitos exemplos de atribuição, se escolhermospi = 3.14
, pi
será um nome (não exclusivamente, pois um objeto pode ter vários nomes) para o objeto 3.14
. Se você não entender algo, consulte a documentação oficial do Python.
Você pode atribuir vários valores a várias variáveis em uma linha. Observe que deve haver o mesmo número de argumentos nos lados direito e esquerdo do operador =
:
a, b, c = 1, 2, 3
print(a, b, c)
# Output: 1 2 3
a, b, c = 1, 2
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b, c = 1, 2
=> ValueError: need more than 2 values to unpack
a, b = 1, 2, 3
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b = 1, 2, 3
=> ValueError: too many values to unpack
O erro no último exemplo pode ser evitado atribuindo os valores restantes ao número igual de variáveis arbitrárias.
Essa variável dummy
pode ter qualquer nome, mas é convencional usar o underline _
para atribuir valores:
a, b, _ = 1, 2, 3
print(a, b)
# Saída: 1, 2
Observe que o número de _
e o número de valores restantes devem ser iguais. Caso contrário, 'too many values to unpack error'
é lançado como a seguir:
a, b, _ = 1,2,3,4
=>Traceback (most recent call last):
=>File "name.py", line N, in <module>
=>a, b, _ = 1,2,3,4
=>ValueError: too many values to unpack (expected 3)
Você também pode atribuir um valor único a várias variáveis simultaneamente.
a = b = c = 1
print(a, b, c)
# Saída: 1 1 1
Ao usar essa atribuição em sequência (ou cascata), é importante observar que todas as três variáveis a
, b
e c
referem-se ao mesmo objeto na memória, um objeto int
com o valor de 1
.
Em outras palavras, a
, b
e c
são três nomes diferentes dados ao mesmo objeto int
. Atribuir um objeto diferente a um deles não irá alterar os outros, exatamente como a seguir:
a = b = c = 1 # todos os três nomes a, b e c referem-se ao mesmo objeto int com valor 1
print(a, b, c)
# Saída: 1 1 1
b = 2 # b agora se refere a outro objeto int, um com o valor 2
print(a, b, c)
# Saída: 1 2 1 # então a saída é como o esperado.
O exemplo acima também é válido para tipos mutáveis (como list, dict etc.), assim como para tipos imutáveis (como int, string, tuple, etc.):
x = y = [7, 8, 9] # x e y se referem ao mesmo objeto de lista que acabou de criar, [7, 8, 9]
x = [13, 8, 9] # x agora se refere a um objeto de lista diferente recém-criado, [13, 8, 9]
print(y) # y ainda se refere à lista em que foi atribuído
# Saída: [7, 8, 9]
As coisas são um pouco diferentes quando se trata de modificar o objeto (ao contrário de atribuir o nome a um objeto diferente, o que fizemos acima) quando a atribuição em cascata é usada para tipos mutáveis. Dê uma olhada abaixo:
x = y = [7, 8, 9] # x e y são dois nomes diferentes para o mesmo objeto de lista [7,8, 9]
x[0] = 13 # estamos atualizando o valor da lista [7, 8, 9] por um de seus nomes, x nesse caso
print(y) # imprimindo o valor da lista usando seu outro nome
# Saída: [13, 8, 9] # portanto, naturalmente a mudança é refletida
Listas aninhadas também são válidas em python. Isso significa que uma lista pode conter outra lista como um elemento.
x = [1, 2, [3, 4, 5], 6, 7] # esta é uma lista aninhada
print x[2]
# Saída: [3, 4, 5] # esse array corresponde a 3º posição, a partir de 0, na lista
print x[2][1]
# Saída: 4 # 4 corresponde a 2º posição, a partir de 0, dentro da lista na 3º posição, também a partir de 0.
Por fim, as variáveis no Python não precisam permanecer do mesmo tipo que foram definidas pela primeira vez, você pode simplesmente usar = para atribuir um novo valor a uma variável, mesmo que esse valor seja de um tipo diferente.
a = 2
print(a)
# Saída: 2
a = "Novo valor"
print(a)
# Saída: Novo valor
Se isso o incomoda, pense no fato de que o que está à esquerda do operador =
é apenas um nome
para um objeto
. Primeiro você chama o int objeto com o valor 2
para a
, então você muda de ideia e decide atribuir um novo nome para a
com um uma string "Novo valor"
. Simples, certo?
Achou que está faltando alguma coisa? Com certeza deve estar, deixe seu comentário.
Comentários