class Test: def c(self, args): print args def b(self, args): args.append('d') def a(self): args = ['a', 'b', 'c'] self.b(args) self.c(args) Test().a()
Почему не печатается ['a', 'b', 'c']?
Когда вы передаете список функции, вы действительно передаете ей указатель на список, а не копию списка.Таким образом, b добавляет значение к исходному args, а не к его локальной копии.
b
args
Параметр, который вы передаете методам b и c, является ссылкой на список args, а не его копией. В методе b вы добавляете в тот же список, который вы создали в методе a.
c
a
См. этот ответ для более подробного объяснения передачи параметров в Python.