python pass-by-reference pass-by-value

12 views
Skip to first unread message

Claudio Berrondo

unread,
Jun 17, 2012, 12:18:14 AM6/17/12
to dojo-rio
(papo de pós-dojo-gigante...)

... ou nem uma coisa nem outra? a história é antiiiiga:...

http://effbot.org/zone/call-by-object.htm

http://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable-by-reference

http://effbot.org/zone/python-objects.htm

quem entender primeiro, explica pros demais :D
><>

Jacqueline Abreu

unread,
Jun 17, 2012, 12:27:59 AM6/17/12
to dojo...@googlegroups.com

Berrondo, demais este post :D+

Ler com carinho os links :D

(Flood pequetito: Outros assunto falados foram node.js, equiparação do programador front-end com back-end, motivações para termos cada vez mais software livre - "mais praças, menos cerquinhas", [expressão do Berrondo] - possíveis eventos aqui no RJ, Python Brasil aqui no RJ, história de como o dojo-rio foi criado e mais outros temas tb :D )

Flávio Amieiro

unread,
Jun 17, 2012, 12:35:57 AM6/17/12
to dojo...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/17/2012 01:18 AM, Claudio Berrondo wrote:
> (papo de p�s-dojo-gigante...)
>
> ... ou nem uma coisa nem outra? a hist�ria � antiiiiga:...
A resposta que foi aceita no stackoverflow � bem interessante, e bem
pr�xima do que o Juan falou. O resumo da resposta dele acho que �: se
passa por valor, mas o que se passa � a refer�ncia � vari�vel[0]. �
legal tamb�m que a resposta tem alguns exemplos do que d� pra fazer
(que cobrem aquele lance dos objetos mut�veis).

A resposta logo abaixo diz que n�o � nem por refer�ncia nem por valor,
mas um tro�o chamado "call by object" e aponta pro primeiro link a� de
cima. Ainda n�o li esse link, mas a resposta do sujeito no
stackoverflow parece s� um jeito de fugir da quest�o.

[0] http://stackoverflow.com/a/986145/802
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJP3V6qAAoJEEXc66sEiPvvaukQAKYbjqegWASmOSw1nKR4vWZ3
bpYj5I4ZKOR+EpOxWYxiRqvKQGawDsNR2r2+qJq2qwlUd6Lj+ppnmlRXQ3XGCkee
j28XsuE34XZkOQo2Vtxy+X+6L/Sg2QrSVBjHd3Kp5yBEoKkNRDs4sHsn6Hz9nNRr
loR8Rgz7O24r5Q2dbx+qW8HrLv+UZPaP/GkG5oroNHRuBggk4CJN4adBrA1aoGyP
6mZrW7C/YZOWdSAWRMCpOlFcWqJ3jrjoq/3xD+1HB1vTUdfCHY3tJLIUPdlEX1Se
Y2BqdiO302Tz26IAgX82IpHC4FZrG0UpmNKp0Wb/xWPHA90vJu9+24AFOw16Ku0R
5Y7Ge4cmu70iA8Gm3BVoWNToUvjXEWMDWC7D0flmmerlk3eSTheZ7Un5fqEfkQ3d
AkBqq/YocBfAa1c2V2UzT8VDs/aX03pReoh6/0Q/qzCDOT9R80DehDImRKWUlmSo
lug+iKSjhkVyeSuVVE4PmECWuMuSi74py7m1lGk0jh9FWt66KLp8d7F7hrLlewTu
ItpesRp0mLzC/JYVCMgyUiH8+VQlEfDOUNM9srJCdKYtg5HKSKvW9c7n7nc5+JZ3
+RIrGNP9Af0AGJuC6P9QgqdgL6304ihhmImfkPGgUrbNLLMQVnwZi+0bw77i2ltP
mAvVq09OPjOdLYHLrzY3
=s2tq
-----END PGP SIGNATURE-----

Claudio Berrondo

unread,
Jun 17, 2012, 1:16:18 AM6/17/12
to dojo...@googlegroups.com
acho que não.

o link aponta pra citações do jeito CLU de tratar a questão (que
parece ter sido a inspiração de Python). e é mais do que o simples
pass-by-reference, pass by value...

tem a questão de os objetos serem imutáveis ou não, tem a questão da
re-atribuição no escopo chamado eliminar a referência para o escopo
chamador...

é fato o que o Juan falou. o objeto é recebido numa nova referência (a
passagem por valor da referência) mas tem mais coisa aí... vamos ler
os posts com carinho como disse a Jac...

;-)
><>



2012/6/17 Flávio Amieiro <flavio...@gmail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 06/17/2012 01:18 AM, Claudio Berrondo wrote:
>> (papo de pós-dojo-gigante...)
>>
>> ... ou nem uma coisa nem outra? a história é antiiiiga:...
> A resposta que foi aceita no stackoverflow é bem interessante, e bem
> próxima do que o Juan falou. O resumo da resposta dele acho que é: se
> passa por valor, mas o que se passa é a referência à variável[0]. É
> legal também que a resposta tem alguns exemplos do que dá pra fazer
> (que cobrem aquele lance dos objetos mutáveis).
>
> A resposta logo abaixo diz que não é nem por referência nem por valor,
> mas um troço chamado "call by object" e aponta pro primeiro link aí de
> cima. Ainda não li esse link, mas a resposta do sujeito no
> stackoverflow parece só um jeito de fugir da questão.
>
> [0] http://stackoverflow.com/a/986145/802
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.19 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQIcBAEBAgAGBQJP3V6qAAoJEEXc66sEiPvvaukQAKYbjqegWASmOSw1nKR4vWZ3
> bpYj5I4ZKOR+EpOxWYxiRqvKQGawDsNR2r2+qJq2qwlUd6Lj+ppnmlRXQ3XGCkee
> j28XsuE34XZkOQo2Vtxy+X+6L/Sg2QrSVBjHd3Kp5yBEoKkNRDs4sHsn6Hz9nNRr
> loR8Rgz7O24r5Q2dbx+qW8HrLv+UZPaP/GkG5oroNHRuBggk4CJN4adBrA1aoGyP
> 6mZrW7C/YZOWdSAWRMCpOlFcWqJ3jrjoq/3xD+1HB1vTUdfCHY3tJLIUPdlEX1Se
> Y2BqdiO302Tz26IAgX82IpHC4FZrG0UpmNKp0Wb/xWPHA90vJu9+24AFOw16Ku0R
> 5Y7Ge4cmu70iA8Gm3BVoWNToUvjXEWMDWC7D0flmmerlk3eSTheZ7Un5fqEfkQ3d
> AkBqq/YocBfAa1c2V2UzT8VDs/aX03pReoh6/0Q/qzCDOT9R80DehDImRKWUlmSo
> lug+iKSjhkVyeSuVVE4PmECWuMuSi74py7m1lGk0jh9FWt66KLp8d7F7hrLlewTu
> ItpesRp0mLzC/JYVCMgyUiH8+VQlEfDOUNM9srJCdKYtg5HKSKvW9c7n7nc5+JZ3
> +RIrGNP9Af0AGJuC6P9QgqdgL6304ihhmImfkPGgUrbNLLMQVnwZi+0bw77i2ltP
> mAvVq09OPjOdLYHLrzY3
> =s2tq
> -----END PGP SIGNATURE-----
>

Flávio Amieiro

unread,
Jun 17, 2012, 1:44:33 AM6/17/12
to dojo...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/17/2012 02:16 AM, Claudio Berrondo wrote:
> acho que n�o.

�, eu li agora. Acho que n�o � uma fuga da quest�o, mas parece que ele
tenta usar um conjunto diferente de conceitos, e a� surge o que ele
chama de pass by object (ou sharing). O tempo todo ele acusa o
interlocutor de usar seus pr�prios conceitos sem defini-los, mas acho
que talvez a quest�o seja que eles est�o tratando de n�veis de
abstra��o diferentes. O texto dele n�o inclui a quest�o de
implementa��o que o Juan falou (se o valor t� na heap ou na stack).
Ele fala do modelo de objetos da linguagem.

> o link aponta pra cita��es do jeito CLU de tratar a quest�o (que
> parece ter sido a inspira��o de Python). e � mais do que o simples
> pass-by-reference, pass by value...
>
> tem a quest�o de os objetos serem imut�veis ou n�o, tem a quest�o
> da re-atribui��o no escopo chamado eliminar a refer�ncia para o
> escopo chamador... � fato o que o Juan falou. o objeto � recebido
> numa nova refer�ncia (a passagem por valor da refer�ncia) mas tem
> mais coisa a�... vamos ler os posts com carinho como disse a
> Jac...

Acho que tem muita coisa ali ainda que eu n�o vi, mas j� foi
interessante ter essa vis�o diferente do problema.

Um ponto que me pareceu importante (mas que eu ainda n�o digeri
direito) � que (pelo menos na CLU) o modelo � de certa forma h�brido:
n�o � por valor por que altera��es podem ser vis�veis para quem chamou
a fun��o (no caso de objetos mut�veis, pelo menos) e n�o � por
refer�ncia por que a fun��o chamada n�o tem acesso �s vari�veis de
quem a chamou, apenas a alguns objetos.

Uma outra coisa que ficou meio em aberto � a real import�ncia da tal
CLU pro Python. Tudo bem que parece que essa linguagem foi importante
para se chegar � orienta��o a objetos, mas n�o sei se isso significa
que qualquer linguagem OO (ou Python especificamente) tenha rela��o
direta com ela. Talvez eu s� esteja preocupado com isso por que em
alguns momentos parecia que o sujeito estava tentando usar um
argumento de autoridade do tipo 'eu conhe�o essa linguagem da d�cada
de 70 e j� li um monte de coisa sobre isso, � melhor voc� ler tuuuudo
isso antes de falar comigo'.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJP3W6/AAoJEEXc66sEiPvvwYkQAKuciRwSw/cWyZedR9cMX55T
dgCF2mjmwYiXXyiwGvsqfV8Mxgid2egvPo7QUneSlRgds1TtS696w8H5cHwTktPz
PBuwpvhnqpd0NdYNepmzPQJFc9ClRBVwiyfszn++xRgNydKjzWCEmVPPiQHe4aZ9
qAYSRSdrR5ZhMNOIkBJumnOsQyUIqgBrz4BNw5ZVIbFoDjJb4wa1sKUNwCq8l/o8
poaz+9HA5G9K5X4Aac40M/S93MPNZ2dgnTmj7w5+/9BCpB53cx3bztZdSK9PXH7H
fYGw/70ew6JgDLQWc2KS8K7y4Zy0nSR4c8mm4B8FYXQj/VQwwSFhdutyOImcxMRy
yPJeIZtzgKj54SJN+FlTRU19tn5gtgVJmwFexUDLTwAHaEsHtZavWp5Sg2t9w3sM
gEA7wiwYGHnxtshcoOR9NX2ZgAV4wZGSoFtyDBFi4aafMbtXC15VqoXSZlyYbE4A
V2lmn6INxvEpnI/uxizc06KB7YcWJSBJeQ+bnvgzUP6P+mKg2MrYtUii+EZIS81A
R8OUai0si9vBnWB3e4gRtELL3bjNAoAo7r8HHG+ADruakusk47Z4K5SsKIOenaDd
uFKXBH9w1r4bRY79C07snxG9nwEhDWLINEBRwKf0F02NDp4DrbV9CFQ7iNQcX9Ta
RCHdS2reC64FFIt9u9uk
=v7mP
-----END PGP SIGNATURE-----
Reply all
Reply to author
Forward
0 new messages