Форум сайта python.su
Добрый день.
Прошу Вас намекнуть, посоветовать.
1) я правильно поняла. Что в питоне параметры в функцию передаются только по ссылке. В книге Россума Язык программирования Python написано:
автор
Аргументы функции в момент вызова пмещаются в локальную таблицу имен вызываемой функции. Т. о. аргументы передаются по значению (где аргумент всегда является ссылкой на объект, а не его значением)
2)в лекциях написано, что параметры передаются по ссылке и есть два вида передачи(как я поняла): один, когда меняем копию меняем объект, другой теневая копия-создается копия и меняя ее объект уже не меняется, делается это с помощью
import copy
b = copy.deepcopy(a)
Офлайн
>>> 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
[]
Офлайн
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)
def g(a):
print id(a)
a+=1
print id(a)
a=5
print id(a)
g(a)
print a
Офлайн
Уважаемые sp3, doza_and!!
Спасибо Вам огромное за сооооооооооооооообщение, очень Вам признательна!!!!!!!!!!!!!!!
Офлайн