Python (всегда), как Java (в основном) передает аргументы (и, в простого присваивания, связывает имена) путем ссылки на объект. Не существует понятия «передать по значению», и никакая концепция «ссылки на переменные» - это только ссылка на значение (некоторые выражают это, говоря, что у Python нет есть «переменные» .. . Он имеет имена, которые привязаны к значениям - и это все, что может когда-либо произойти).
Mutable objects могут иметь мутирующие методы (некоторые из которых выглядят как операторы или даже назначение, например a.b = c
фактически означает type(a).__setattr__(a, 'b', c)
, который вызывает метод, который может быть мутирующим).
Но простое присвоение имени bar (и передача аргументов, точно такое же, как простое присвоение имени baren) никогда не имеет что-либо вообще, чтобы сделать какие-либо мутирующие методы.
Совершенно независимо от используемых типов, простое присвоение имени barename (и, аналогично, передача аргументов) связывает или восстанавливает только определенное имя слева от =
, никогда не затрагивая никакое другое имя или какой-либо объект каким-либо образом. Вы очень ошибочно, если вы считаете, что типы имеют какое-либо отношение к семантике передачи аргументов (или, что то же, простое присвоение именам).
Вы не можете. (и это дополнение для минимальной длины комментария SO SO) –
Зачем вы хотите? Каков контекст, который запрещает вам просто возвращать значение? – detly