•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

Python在函数中运用列表作为默许参数的引见(代码示例)【Python教程】,python

摘要: 本篇文章给人人带来的内容是关于Python在函数中运用列表作为默许参数的引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。本文将引见笔者在工作中碰到的Python...
本篇文章给人人带来的内容是关于Python在函数中运用列表作为默许参数的引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

本文将引见笔者在工作中碰到的Python的一个坑,那就是运用列表作为默许参数。

我们晓得,在Python中,列表(list)是可变对象,所以列表的内容能够会在函数内转变。另一个须要注重的是,运用列表作为函数的默许参数时,列表的内容变化状况。

起首,我们看以下的代码例子:

def add(x, lst=[]):
    if x not in lst:
        lst.append(x)

    return lst

def main():
    list1 = add(1)
    print(list1)

    list2 = add(2)
    print(list2)

    list3 = add(3, [11, 12, 13, 14])
    print(list3)

    list4 = add(4)
    print(list4)

main()

你能够认为输出的效果会是:

[1]
[2]
[11, 12, 13, 14, 3]
[4]

但事实上,该顺序输出的效果是:

[1]
[1, 2]
[11, 12, 13, 14, 3]
[1, 2, 4]

这是为何呢?函数add的功用是当x不在列表中时,将x追加给列表lst。当函数第一次执行时,参数lst的默许值[]被建立。这个默许值只会被建立一次。add(1)将1加到lst。当函数再次被挪用时,lst是[1]而不是[],由于lst只被建立一次。当参数的lst为[11,12,13,14]时,lst就是[11,12,13,14]。list4挪用函数时,运用默许参数,因而,如今默许参数lst为[1,2]。
  为了更好地舆解挪用状况,能够在add函数中输出lst的id,如以下代码:

def add(x, lst=[]):
    print(id(lst))

    if x not in lst:
        lst.append(x)
    
    return lst

def main():
    list1 = add(1)
    print(list1)

    list2 = add(2)
    print(list2)

    list3 = add(3, [11, 12, 13, 14])
    print(list3)

    list4 = add(4)
    print(list4)

main()

输出效果以下:

4469603648
[1]
4469603648
[1, 2]
4469670472
[11, 12, 13, 14, 3]
4469603648
[1, 2, 4]

能够看到,list1, list2, list4挪用时默许参数的id并没有发作转变,而list3的id发作了转变。
  这是Python运用列表作为默许参数的一个坑。那末,怎样防止踩坑呢?假如想要运用默许列表在每次函数挪用时都是[],能够像下面的顺序那样修正函数参数:

def add(x, lst=None):

    if lst is None:
        lst = []
    if x not in lst:
        lst.append(x)

    return lst

def main():
    list1 = add(1)
    print(list1)

    list2 = add(2)
    print(list2)

    list3 = add(3, [11, 12, 13, 14])
    print(list3)

    list4 = add(4)
    print(list4)

main()

输出的效果以下:

[1]
[2]
[11, 12, 13, 14, 3]
[4]

以上就是Python在函数中运用列表作为默许参数的引见(代码示例)的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号