Blog

Postado em em 4 de julho de 2023

Conceitos Importantes em Python que Todo Programador Precisa Saber

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:

3 Conceitos que Todo Programador Precisa Saber

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:

  • Posicionais
  • Keyword – palavra-chave
  • Opcional ou nã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.

Conclusão – Conceitos Importantes em Python

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,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador