Python - invocando funções com e sem parênteses
As funções em Python são os blocos de código definidos que executam uma tarefa específica. Nesta seção, discutiremos a diferença em invocar funções com e sem parênteses.
- Quando chamamos uma função com parênteses , a função é executada e retorna o resultado ao que pode ser chamado .
- Em outro caso, quando chamamos uma função sem parênteses , uma referência de função é enviada ao chamável em vez de executar a própria função.
Vamos discutir três conceitos importantes:
- Invocando funções
- Funções de retorno
- Passando funções
Invocando funções -
A função abaixo executa uma tarefa simples, concatenação de strings. Aqui, invocaremos a função `concatenate_string` com e sem parênteses e veremos a diferença.
def
concatenate_string(
*
args):
string1
=
args[
0
]
string2
=
args[
1
]
return
string1
+
string2
obj
=
concatenate_string(
'Hello, '
,
'George'
)
(
'Function call with Parentheses: '
)
(obj)
obj
=
concatenate_string
(
'Function call without Parentheses: '
)
(obj)
Resultado
Chamada de função com parênteses: Ola George Chamada de função sem parênteses: <função concatenate_string em 0x7f0bb991df28>
Para o primeiro caso, quando chamamos concatenate_string('Hello, ', 'George')
, a função executa e retorna a string concatenada.
E, para o segundo caso, quando chamamos concatenate_string
ie sem parênteses, uma referência é passada para o chamável em vez de executar a própria função. Aqui, o chamável pode decidir o que fazer com a referência.
Funções de retorno -
A partir da discussão acima, você pode entender que, quando a função é chamada com parênteses, o código é executado e retorna o resultado. E, quando ele é chamado sem parênteses, uma referência de função é retornada ao chamável.
Então, o que acontece quando uma função é codificada junto com uma instrução de retorno com parênteses e sem parênteses. Vamos ver um exemplo.
Com parênteses
def
concatenate_string(
*
args):
string1
=
args[
0
]
string2
=
args[
1
]
def
merge_string(string1, string2):
return
string1
+
string2
return
merge_string(string1, string2)
def
func():
conc_obj
=
concatenate_string(
'Hello, '
,
'George'
)
(conc_obj)
func()
Resultado
Ola George
A partir do exemplo acima, está claro que merge_string
é uma função dentro da função concatenate_string
e a função principal ( concatenate_string
) retorna a subfunção ( merge_string
) para o chamador.
return merge_string(string1, string2)
Aqui merge_string
é chamado com parênteses, portanto, ele executa e fornece o resultado concatenate_string
de onde o resultado é passado func
.
Sem parênteses
def
concatenate_string():
def
merge_string(string1, string2):
return
string1
+
string2
return
merge_string
def
func():
conc_obj
=
concatenate_string()
(conc_obj)
(conc_obj(
'Hello, '
,
'George'
))
func()
Resultado:
<function concatenate_string..merge_string em 0x7f1e54ebc158> Ola George
Como o merge_string
é usado sem parênteses, o concatenate_string
passa a referência da função para o chamável em func
vez de executar o merge_string
.
return merge_string
Portanto, podemos concluir que, quando codificamos a subfunção com parênteses em uma instrução de retorno, a função principal executa a subfunção e passa o resultado para o que pode ser chamado.
E, quando codificamos a subfunção sem parênteses em uma instrução de retorno, a função principal passa a referência da subfunção ao chamável em vez de executá-la. Aqui, o chamável decide o que fazer com a referência.
Passando funções -
Você pode passar uma função como um argumento criando a referência, chamando a função sem parênteses e fornecê-la como um argumento. Vamos dar uma olhada no código.
def
concatenate_string(
*
args):
string1
=
args[
0
]
string2
=
args[
1
]
def
merge_string(string1, string2):
return
string1
+
string2
return
merge_string(string1, string2)
def
function_call(function):
string1
=
'Hello, '
string2
=
'George'
return
function(string1, string2)
(function_call(concatenate_string))
Resultado:
Ola George
Nesse caso, a referência de concatenate_string
é passada para o function_call
como um argumento.
function_call(concatenate_string)
Dentro de function_call, ele executa o concatenate_string
usando a referência e retorna o resultado para o chamável.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva