在python中list作函数形参,防止被实参修改的实现方法

0.摘要

我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变。本文将主要介绍这种错误的现象、原因和解决方法。

1.代码示例

def fun(inner_lst):
  inner_lst.pop()
 
lst = [1,2,3,4,5,6,7]
fun(lst)
print(lst)
fun(lst)
print(lst)
fun(lst)
print(lst)
fun(lst)
print(lst)
fun(lst)
print(lst)

补充知识:Python 函数参数List 形参改变实参问题

在学习Python 中的排序中,发现一个问题,写的排序函数会改变实参中的原List,不方便,我做对比,经过查询和学习,总结如下:

List 改变某一项值,会改变实参。

整体从新赋值,不会改变实参。

原因为形参和实参这两个标签指向的都是同样的一块列表。改变其中一个另一个也就跟着改变了。

解决方法如下可在参数中加:

在函数中复制一个List,在新的List中进行排序。

def selectionSort(xx):
  x=xx[:]
  i = 0
  while i < len(x) - 1:
    j = i + 1
    minindex = i
    while j < len(x):
      if x[minindex] > x[j]:
        minindex = j
      j += 1
    x[minindex], x[i] = x[i], x[minindex]
    i += 1
  return x

以上这篇在python中list作函数形参,防止被实参修改的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持来客网。