Найти - Пользователи
Полная версия: Некоторые воросы по питону
Начало » Центр помощи » Некоторые воросы по питону
1
Kotjara2
Добрый день.
Прошу Вас намекнуть, посоветовать.
1) я правильно поняла. Что в питоне параметры в функцию передаются только по ссылке. В книге Россума Язык программирования Python написано:
автор
Аргументы функции в момент вызова пмещаются в локальную таблицу имен вызываемой функции. Т. о. аргументы передаются по значению (где аргумент всегда является ссылкой на объект, а не его значением)

2)в лекциях написано, что параметры передаются по ссылке и есть два вида передачи(как я поняла): один, когда меняем копию меняем объект, другой теневая копия-создается копия и меняя ее объект уже не меняется, делается это с помощью
import copy
b = copy.deepcopy(a)
то есть a не меняется при изменении b.
И я что-то не понимаю….
Приведите, пожалуйста пример передачи параметра по ссылке с использованием deepcopy
Пожалуйста, а то я не знаю……
Помогите, пожалуйста.
sp3
>>> l = [] # изменяемый тип list
>>> x = 1 # неизменяемый integer
>>> def forlist(mylist):
... mylist.append('+++')
...
>>> def forint(y):
... y = y+1
...
>>> forlist(l)
>>> forlist(l)
>>> forlist(l)
>>> l
['+++', '+++', '+++']
>>> forint(x)
>>> forint(x)
>>> forint(x)
>>> forint(x)
>>> x
1
>>> import copy
>>> l2 = [] # изменяемый тип list
>>> forlist(copy.deepcopy(l2)) # передаем ссылку уже на другой объект
>>> forlist(copy.deepcopy(l2))
>>> forlist(copy.deepcopy(l2))
>>> l2
[]
doza_and
class Tx:
pass

def f(s):
print "in",id(a)
a=5
print id(a);f(a)
f(5)
a=55555555
print id(a);f(a)
f(55555555)
a=55555555554.+1
print id(a);f(a)
f(55555555555.)
a=Tx()
print id(a);f(a)
id дает адрес объекта

def g(a):
print id(a)
a+=1
print id(a)

a=5
print id(a)
g(a)
print a
В первом примере видно - передаются адреса но
во втором - имеющаяся ссылка - константная - при изменении объекта - создается новый объект (это и без функции так будет)
изменяемые объекты будут обычными ссылками.
Kotjara2
Уважаемые sp3, doza_and!!
Спасибо Вам огромное за сооооооооооооооообщение, очень Вам признательна!!!!!!!!!!!!!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB