Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

[Dúvida] Uso dos parênteses

Olá pessoal estou fazendo o curso de python agora (em 2022) e nos vídeos (gravados em 2015) o professor Nico Steppat diz para usar os parênteses em todas as funções do python para melhorar a leitura do código. Notei que ao usar os parênteses nas funções IF e WHILE, por exemplo, aparece uma advertencia do pycharm sobre o PEP-8. Ai eu pergunto: usar ou não usar os parênteses? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

ola, nas funçoes IF ou WHILE o uso do parenteses é obrigatorio...

Olá, Fabrício. Não são (pelo menos em Python e utilizando o Pytcharm), pois meu código funciona normalmente sem eles. Por isso me gerou a dúdida, pois quando utilizo o pycharm acusa ser desnecessário.

desculpe então, sou estudante de java....

solução!

Olha o que achei no https://pt.stackoverflow.com/questions/367418/declara%C3%A7%C3%A3o-if-uso-de-parenteses#:~:text=O%20uso%20de%20par%C3%AAnteses%2C%20em,com%20a%20performance%20de%20execu%C3%A7%C3%A3o.&text=Princ%C3%ADpios%20de%20c%C3%B3digo%20limpo%2C%20claro,s%C3%A3o%20afetados%20por%20esta%20decis%C3%A3o. Acho que ajuda na sua duvida

O uso de parênteses, em especial para ifewhile, em Python, é mais uma decisão de engenharia de software e manutenibilidade, não tendo esta qualquer relação com a performance de execução. 3

Princípios de código limpo, claro e correto, importantes para a qualidade de software, são afetados por esta decisão.

Portanto, você deve utilizar parênteses quando estes ajudarão na leitura e entendimento do código. 5

Um ponto aqui destacável é dizer sobre a precedência de operadores, e nestes casos, o programador deve/necessita utilizar os parênteses para controle da ordem de execução das avaliações.

Como:

print(1 + 1 * 2, (1 + 1) * 2) # print 3 4 Compartilhar Melhore esta resposta Seguir respondida 11/03/2019 às 6:44 sbrubes's user avatar sbrubes 1.00855 medalhas de prata1313 medalhas de bronze Adicione um comentário

0

Não há nenhum ganho ou perda no uso de parênteses extras em expressões como if e while. Eles não são obrigatórios na linguagem justamente para simplificar a leitura das expressões. o : no final dos comandos faz a separação da expressão para o bloco contido no comando - portanto não existe a ambiguidade potencial que existe em C e as linguagens que copiaram a sua sintaxe exigindo o parênteses no if.

Parenteses extras são automaticamente elimnados no estágio de compilação do programa (lembrando que a compilação em Python é automática). Veja como uma função que usa parênteses e outra que não são idênticas depois de compiladas:

In [15]: def a(): ...: if qualquer_coisa == 1: ...: pass ...:

In [16]: def b(): ...: if (qualquer_coisa == 1): ...: pass ...:

In [17]: import dis

In [18]: dis.dis(a) 2 0 LOAD_GLOBAL 0 (qualquer_coisa) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 POP_JUMP_IF_FALSE 8

3 >> 8 LOAD_CONST 0 (None) 10 RETURN_VALUE

In [19]: dis.dis(b) 2 0 LOAD_GLOBAL 0 (qualquer_coisa) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 POP_JUMP_IF_FALSE 8

3 >> 8 LOAD_CONST 0 (None) 10 RETURN_VALUE Ou seja- o parênteses sequer está indicado no bytecode, que é o que é executado de fato - o processo de "descompilação" do dis.dis não tem nem como saber que ele existia no código fonte.

Note que isso não impede que você use parênteses para melhorar a legibilidade do código, sobretudo em expressões complexas de um if que podem ter que ser quebradas em mais de uma linha. Nesses casos, inclusive, os parênteses são preferíveis ao indicador de continuação de linha \

Na advertência do pycharm ele pede pra vc eliminar os parênteses dizendo que são redundantes. Daí cabe ao programador e à equipe decidirem o que adotar como padrão, já que o código roda normalmente com os parênteses. Na minha opinião, mantê-los seria uma boa prática, já que ajuda no entendimento do código, o mantendo mais legível. A depender do que estamos falando, redundância pode ser bom.

Me questiono devido ao PEP-8 que por si já prima pela legibilidade do código e por ser um "padrão"informal da escrita em Python.

Dependendo de como vc faz o if ou while, o uso dos parênteses é dispensável para deixar o código mais limpo e com menos "poluição visual" por assim dizer. Só comprar a diferença:

if (algo > 23):
    #código

com

if algo > 23:
    #código

Python é muito focado em legibilidade e para isso que fazem o máximo esforço para deixar o código mais limpo e legível possíve, como se fosse uma linguagem mesmo.