5
respostas

Dúvida em relação as função built-in

Olá, bom dia!

As fuções len( ), max( ), input( ) e min( ) recebem parâmetros. Por sua fez, as funções upper( ), strip( ), por exemplo, são chamadas como se fosse métodos de um objeto. Sem deixar de mencionar a função format( ) que além de ser invocada com o ' . ' recebe parâmetro. Por que essa diferença? Qual a lógica por trás dessa diferença?

5 respostas

Bom dia, Rodrigo, tudo beleza?

As funções len(), max(), input() e min()podem ser utilizadas de diversas formas por diferentes tipos built-in do python.

Podemos fazer:

lista = [1, 2, 3, 4]
len(lista)  # Retorna 4

Assim como podemos fazer:

palavra = 'pera'
len(palavra)  # Retorna 4

E também:

dicionario = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
len(dicionario)  # Retorna 4

Essa função funciona para todos esses tipos de dados igualmente, retornando o tamanho deste objeto, seja lá o que isso signifique dentro do contexto do objeto.

As funções strip(), lower() e upper()são realmente métodos da classe str. No python, tudo são objetos, até mesmo as próprias classes. Esses métodos, então, funcionam especificamente para aquele tipo de dado, não fazendo sentido aplicar em outros tipos de dados.

Por exemplo:

palavra.upper()     # Retorna 'PERA'
lista.upper()       # Dá erro visto que lists não possuem método upper()
dicionario.upper()  # Dá erro visto que dicts não possuem método upper()

Em resumo, as funções built-ins são de aspecto mais geral, funcionando para mais de um tipo de dado dentro do código. Essas funções podem ser chamadas a qualquer instante fazendo funcao(argumentos). Os métodos, entretanto, são funções específicas para tipos de dados específicos, como o lower() para strings e append() para listas, por exemplo. Essas funções podem ser chamadas a qualquer momento fazendo instancia_objeto.funcao(parametros).

Espero ter ajudado! Um abraço!

Entendi. Então há uma distinção entre funções, que recebem e métodos no python?

Olá, vejo que você misturou alguns conceitos segue abaixo as definições que encontrei na própria documentação do Python.

Função: Uma série de instruções que retorna algum valor para um chamador. Também pode ser passado zero ou mais argumentos que podem ser usados na execução do corpo. Exemplo de Funções built-in : len( ), abs( ), min( ), max( ), format( )

Método: Uma função que é definida dentro do corpo de uma classe. Se chamada como um atributo de uma instância daquela classe, o método receberá a instância do objeto como seu primeiro argumento (que comumente é chamado de self). Exemplo de Métodos built-in: str.lower( ), str.upper( ), str.format( )

Note que nesse exemplo que usei há tanto a Função format( ) quanto o método str.format( ), o que há de diferente entre eles é que o método é uma função atrelada a uma classe:

>>> a = "String"
>>> type(a)
<class 'str'>

Nesse simples comando a podemos notar que a String é uma classe por isso ela possui métodos próprios, por isso usamos o método str.format( ) com um "." acessar um objeto de uma classe. Já a função format( ):

>>> a = 16
>>> format(a,'b')
'10000'

Ele retorna uma representação “formatada”, de acordo com o segundo parâmetro que no meu caso o 'b' significa, Formato binário. Exibe o número na base 2. Isso demonstra a diferença entre os conceitos. Já em relação a ter ou não ter parâmetros e a quantidade deles isso é definido na implementação da Função/Método. De acordo com o seu uso.

Espero ter esclarecido um pouco.

Um abraço.

Ficou bem mais claro agora. Os métodos built-in têm seu uso mais restrito, pois são implementados em classes. Por isso, só podem ser chamados em contextos específicos. Por sua vez, as funções built-in tem seu uso mais generalizado, a exemplo da função len( ).

Perfeito!!