在编写测试类时,您注意到 Python 中的参数似乎是按值而不是按引用传递。本文将阐明您的假设是否正确,并指导您在 Python 中实现按引用传递。
在 Python 中,参数是按引用传递的,这意味着对象的引用被传递给函数。但是,该引用是按值传递的。这种行为是由于可变数据类型和不可变数据类型之间的差异而产生的。
考虑以下示例:
def try_to_change_list_contents(the_list): the_list.append('four') outer_list = ['one', 'two', 'three'] try_to_change_list_contents(outer_list) print(outer_list)
由于列表是可变的,因此the_list 参数是对outer_list 对象的引用。通过将 'four' 附加到 the_list,outer_list 也会被修改。
相反,考虑这个带有字符串的示例:
def try_to_change_string(my_string): my_string = 'Changed' outer_string = 'Original' try_to_change_string(outer_string) print(outer_string)
尽管发生了变化函数内的 my_string 变量,outer_string 保持不变。发生这种情况是因为字符串是不可变的,无法就地修改。
为了模拟修改原始变量的引用传递,有几个选项:
1。返回新值:函数可以返回一个新值,可以将其赋值给函数外部的原始变量。
2.修改对象的属性:如果变量是对象,则函数可以修改其属性之一,该属性将反映在原始对象中。
3.使用列表或包装器: 您可以将变量包装在列表中并将该列表传递给函数。修改列表会影响原始变量。
通过理解传值和引用机制,可以有效地根据需要修改Python中的变量。
以上是Python 是按值传递还是按引用传递?如何实现按引用传递行为?的详细内容。更多信息请关注PHP中文网其他相关文章!