怎么用引用来改变一个变量

Python 文档里,参数传递的是值还是引用并没有明确说明,现在想要通过引用来改变变量,如何实现?

参数是通过 assignment 来传递的,原因:

  • 传递的参数实际上是一个对象的引用(但是这个引用是通过值传递的)

  • 一些数据类型是可变的,但有一些就不是

所以:

  • 如果传递的是可变对象,那么就可以在方法里面改变,除非重新绑定了这个引用

  • 如果传递的是一个不可变对象,那么就无法实现

是否可变类型?

  • 列表-可变类型

  • 字符串-不可变类型

Solve

  • 可以通过返回值实现

  • 可以建一个存放值的类,然后把它传递给函数或者用一个已有的类,比如列表:

def use_a_wrapper_to_simulate_pass_by_reference(stuff_to_change):
    new_string = something_to_do_with_the_old_string(stuff_to_change[0])
    stuff_to_change[0] = new_string

# 你可以像这样调用
wrapper = [my_string]
use_a_wrapper_to_simulate_pass_by_reference(wrapper)

do_something_with(wrapper[0])

尽管看上去很笨重,但是实现需求了。。。

Last updated