Nesta aula vou falar sobre os 3 conceitos Importantes em Python que todo programador precisa saber! Aprenda quais são hoje!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala Impressionadores! Na aula de hoje eu quero te mostrar 3 conceitos que todo programador Python precisa saber!
Vamos falar sobre variáveis mutáveis e imutáveis, que é um conceito importante principalmente para o tratamento de erros no Python.
Vou abordar o conceito de parâmetros e argumentos de funções para saber quando e como utilizar cada um deles.
Para finalizar vou exemplificar como funciona o if _name_ == “__main__” que você já pode ter visto por aí e não ideia de qual a sua funcionalidade. E a
Os conceitos que vou te explicar hoje são indispensáveis independente da área que você atue em Python.
Então, se você usar Python, você tem que dominar esses três conceitos muito importantes.
1º Conceito – Variáveis mutáveis e imutáveis
As variáveis como vocês devem saber é um nome onde armazenamos um valor.
Podemos armazenar 1500 na variável faturamento, por exemplo:
faturamento = 1500
Podemos fazer cálculos com a variável, podemos multiplicar seu valor, por exemplo:
faturamento = faturamento * 2
Algumas variáveis podem ser modificadas ou editadas usando o replace:
faturamento.replace()
Outras não conseguimos fazer esta edição, isso porque como o conceito diz, algumas variáveis são imutáveis.
Esta variável que acabamos de criar -> faturamento está recebendo um número inteiro 1500, por isso ela é do tipo inteiro (int), se ela recebesse um valor de 1500,5 seria do tipo (float) caracterizado por ter um número decimal, temos também as variáveis do tipo (string) que carrega um valor de texto.
E por que isso é importante?
É importante porque variáveis de números inteiros, float, string ou tuplas são variáveis imutáveis dentro do Python.
Você deve estar se questionando então por que conseguimos a pouco modificar o valor da variável faturamento, afinal é uma variável do tipo número inteiro.
Neste caso o que fizemos foi substituir o valor da variável, vou fazer um exemplo para que você entenda melhor usando uma tupla e uma lista.
# int, float, tuplas -> IMUTÁVEIS
tvendas = (250, 300, 150)
# listas, dicionários -> MUTÁVEIS
lvendas = [250, 300, 150]
Print(tvendas, lvendas)
(250, 300, 150) [250, 300, 150]
Observe que quando a variável é imutável nós conseguimos ver o valor que está na posição 0 da tupla:
# int, float, tuplas -> IMUTÁVEIS
tvendas = (250, 300, 150)
print(tvendas[0])
# listas, dicionários -> MUTÁVEIS
lvendas = [250, 300, 150]
print(tvendas, lvendas)
Mas se tentarmos modificar esse valor vamos gerar um erro no código:
Observe que o erro é justamente na linha onde tentamos alterar o valor do item 0 da tupla.
Se você quiser modificar uma tupla você terá que modificar ela inteira, ou seja, você terá que reatribuir todos os valores dela:
# int, float, tuplas -> IMUTÁVEIS
tvendas = (250, 300, 150)
tvendas = (275, 300, 150)
Dessa forma o código vai desconsiderar a primeira tupla e considerar a segunda já que ambas possuem o mesmo nome.
É o mesmo que deletar uma variável e criá-la outra vez, porém, isso é diferente de modificar seu valor.
Já com a lista é diferente, se fizermos o mesmo com a nossa lista, você vai notar que o valor do item 0 é modificado normalmente.
# int, float, tuplas -> IMUTÁVEIS
tvendas = (250, 300, 150)
# listas, dicionários -> MUTÁVEIS
lvendas = [250, 300, 150]
lvendas[0]=275
print(tvendas, lvendas)
(250, 300, 150) [275, 300, 150]
Mas, por que isso fazer diferença?
Imagine que você criou seu código usando uma tupla, mas sem querer você colocou um % no final do e-mail, assim que você notar o problema vai querer corrigir este problema, se você não lembrar dessa característica da tupla não vai saber porque o e-mail não foi modificado.
email = [email protected]%
email.replace(“%”, “ “)
print(email)
[email protected]%
Então a forma correta neste caso é atribuir a mudança a uma variável e-mail, desta forma o valor será substituído
email = [email protected]%
email = email.replace(“%”, “ “)
print(email)
[email protected]%
Se fosse uma lista, isso poderia ser feito direto sem a atribuição
lvendas.append(1500)
Print(lvendas)
[275, 300, 150, 1500]
A importância de você entender esse conceito é justamente para quando ocorrer um erro como este você perceber rapidamente o motivo do erro e saber como corrigir prontamente, variáveis imutáveis necessitam de uma atribuição caso exista um erro no valor, diferente das variáveis mutáveis que podem ser alteradas de forma direta.
2º Conceito – Parâmetros e argumentos das funções
Imagine que você está criando uma função para calcular o imposto sobre o preço de algum produto.
Você pode criar a função sem nenhum parâmetro, sem argumentos, esse é o modo mais simples de se criar uma função.
def calcular_imposto():
print(“imposto calculado”)
calcular_imposto()
Para esta função funcionar vamos ter que fornecer os parâmetros, neste caso o preço e a taxa:
def calcular_imposto(preço, taxa):
imposto = preço * taxa
return imposto
calcular_imposto()
Existem 3 tipos de parâmetros que você pode passar, os parâmetros são:
Quando nós simplesmente passamos os parâmetros como fizemos no exemplo acima, colocando preço e taxa dentro das chaves da função, isso significa que esses parâmetros são obrigatórios.
Se, quando você for rodar o código o preço e a taxa não forem informados o código vai gerar um erro.
def calcular_imposto(preco, taxa):
imposto = preco * taxa
print(preco, taxa)
return imposto
calcular_imposto(1500, 0.2)
print(imposto)
1500 0.2
Então, temos que passar o preço como primeiro argumento e em seguida a taxa dentro dos parênteses, temos inclusive que passar nessa ordem, porque foi a ordem que criamos as referências dentro dos parênteses na primeira linha.
O código vai atribuir valor ao parâmetro levando em consideração a ordem em que foram colocados.
Claro que se você estiver fazendo uma multiplicação a ordem dos fatores não altera o produto, portanto o resultado não vai se alterar, mesmo assim está errado, porque você está atribuindo a taxa, o valor do preço e vice-versa.
Se você quiser deixar correto coloque as informações respeitando a ordem ou transforme o argumento em uma keyword:
def calcular_imposto(preco, taxa):
imposto = preco * taxa
print(preco, taxa)
return imposto
calcular_imposto(taxa=0.2, preco=1500)
print(imposto)
1500 0.2
Para isso coloque a taxa e atribua a ela o valor dentro dos parênteses, faça o mesmo com o preço, assim fica claro a correspondência dos valores, a isso damos o nome de variável keyword.
Cuidados
Um cuidado que você deve tomar é, você pode colocar um argumento de posição antes de um keyword, ex:
calcular_imposto(1500, taxa=0.2)
Mas o contrário não pode ser feito:
calcular_imposto(preco=1500, 0,2)
Se o argumento de keyword vier primeiro, os demais devem ser Keyword também, ou o resultado será um erro no código.
Se você quiser passar um parâmetro que não tem um valor definido você não deve colocar 0 ou espaço, pode usar o none:
Def calcular_imposto(preço, taxa, outrovalor=None):
Estes são os conceitos de parâmetros e argumentos, sem eles você não vai conseguir trabalhar com funções.
3º Conceito – if __name__ == “__main__”:
Exemplo:
def calcular_imposto(valor, taxa):
imposto = valor * taxa
return imposto
if __name__ == "__main__":
print(calcular_imposto(1000, 0.2))
O que é o (if __name__ == “__main__”:) e para que serve?
Esse código serve para determinar quando executar ou não o código que está logo abaixo, neste caso o print, então devemos entender da seguinte forma:
“Estou executando este arquivo de código? Sim ou não? Se sim, eu estou executando este arquivo, então pode rodar o código abaixo, se não o print não será feito.”
Usamos este código porque quando importamos um arquivo como o imposto, o código é executado de cima a baixo, executando o arquivo inteiro, inclusive os testes que estamos fazendo no arquivo.
Então o código __name__ é executado se estivermos rodando o mesmo arquivo que estamos testando, se o arquivo que está rodando o código for outro, e este outro está apenas referenciando um cálculo do arquivo que está sendo testado, o código __name__ passa a representar o nome do outro arquivo que está utilizando o cálculo.
Assim este código consegue identificar que não é o teste que está sendo rodado, e que por isso não é necessário imprimir o print que só fazia parte do teste.
Então essencialmente temos um arquivo com um cálculo que está sendo testado e neste teste o print é necessário:
def calcular_imposto(valor, taxa):
imposto = valor * taxa
return imposto
if __name__ == "__main__":
print(calcular_imposto(1000, 0.2))
Temos também outro arquivo que não está em teste, mas que, quando utilizado usa o cálculo que está no arquivo que está sendo testado:
From imposto import calcular_imposto
Faturamento = 5000
ir = calcular_imposto(faturamento, 0.2)
iss = calcular_imposto(faturamento, 0.05)
csll = calcular_imposto(faturamento, 0.0025)
print(ir, iss,csll)
Observe que este código utiliza o cálculo do outro arquivo logo acima.
Então este código __name__ que é um código nativo, ou seja, se __name__ receber o nome de __main__ significa que o arquivo que está sendo rodado é o mesmo que está sendo analisado, se o arquivo for outro o nome __name__ muda não para __main__, mas assume o nome do outro arquivo que está sendo rodado.
Esta variável é capaz de perceber essa mudança e definir se o arquivo está sendo rodado diretamente ou não, se sim printa o teste, se não o teste não é printado e o resultado do cálculo sai corretamente.
Esses conceitos que acabei de explicar pode não ser novidade para algumas pessoas, mas são conceitos importantes porque sem eles você não é capaz de rodar seus códigos corretamente.
Caso aconteça algum erro gerado por não ter esses conhecimentos pode demorar para que você identifique o motivo por ser um problema sutil.
Por este motivo resolvi fazer esta aula mais detalhada, assim você pode aprofundar mais sobre cada um desses assuntos e retirar suas dúvidas.
Eu fico por aqui! Espero que tenham gostado! Até a próxima,
Para acessar outras publicações de Python, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.