sexta-feira, 30 de janeiro de 2015

Exame Recurso - Pergunta 1b

As respostas dadas pela generalidade dos(as) alunos(as) denota uma incompreensão de aspectos básicos e fundamentais de Python. Em Python tudo são objectos, e os objectos têm atributos. O nome é um dos atributos, e é através do nome que chegamos a outro valor, o valor. Assim, temos por exemplo:
>>> x = 5
>>> x
5
>>> a = ‘xpto’
>>> a
xpto
Neste exemplo, criámos objectos (5, ‘xpto’) e demos-lhes um nome (x, a).

Mas também se fizermos:
>>> def acme(n):
…  return 2*n
…
>>>
Criamos também um objecto, agora do tipo função, e estamos a dar-lhe o nome acme. Se agora perguntarmos pelo valor do objecto de nome acme o que recebemos de volta é o descritor da função:
>>> acme
<function acme at 0x102778488>
Então, no caso da pergunta do exame, quando fazemos:
a = funcao
Estamos a dizer que a é um outro nome para o objecto de tipo função, funcao. Logo, ao fazermos:
>>> print(a)
o que vai aparecer é a impressão do valor associado ao objecto de nome a, que é o mesmo do associado a funcao:
>>> def funcao():
…    print('128')
…
>>> a = funcao
>>> a
<function funcao at 0x102778510>
Notar que pode agora usar o nome a em vez de funcao e obter o mesmo resultado:
>>> funcao()
128
>>> a()
128

Sem comentários:

Enviar um comentário