美文网首页Python小哥哥
Python在函数中使用列表作为默认参数

Python在函数中使用列表作为默认参数

作者: 我爱学python | 来源:发表于2019-06-18 15:39 被阅读11次

本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数。

  我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变。另一个需要注意的是,使用列表作为函数的默认参数时,列表的内容变化情况。

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

你可能以为输出的结果会是:

但事实上,该程序输出的结果是:

这是为什么呢?函数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,如以下代码:

输出结果如下:

可以看到,list1, list2, list4调用时默认参数的id并没有发生改变,而list3的id发生了改变。

这是Python使用列表作为默认参数的一个坑。那么,如何避免踩坑呢?如果想要使用默认列表在每次函数调用时都是[],可以像下面的程序那样修改函数参数:

输出的结果如下:

相关文章

  • Python在函数中使用列表作为默认参数

    本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数。   我们知道,在Python中,列...

  • Python之在函数中使用列表作为默认参数

      本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数。  我们知道,在Python中,...

  • 构造函数 析构函数 拷贝赋值(GeekBand)

    1、默认构造函数 默认构造函数是没有参数的函数。另外,默认构造函数也可以在参数列表中以参数默认值的方式声明。默认构...

  • Python的参数

    在Python 中,除了正常定义的参数外,Python 还可以使用默认参数,可变参数,关键字参数,使得函数的灵活度...

  • python的函数属性

    1. 函数的参数 在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言...

  • python入门五

    1.定义函数在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号: 默认参数 ...

  • Python函数的参数(详细版)

    函数的参数有:必选参数、默认参数、可变参数、关键字参数。 在Python中定义函数,可以用必选参数、默认参数、可变...

  • Python 程序员最常犯的十个错误

    常见错误1:错误地将表达式作为函数的默认参数 在Python中,我们可以为函数的某个参数设置默认值,使该参数成为可...

  • Python 程序员最常犯的十个错误,作为小白的你是不是也经常犯

    常见错误1:错误地将表达式作为函数的默认参数 在Python中,我们可以为函数的某个参数设置默认值,使该参数成为可...

  • Python 34

    函数参数的灵活使用 1.默认值参数 2.列表参数 1)默认值参数 有参数的函数而言,必须在调用时制定参数 #给函数...

网友评论

    本文标题:Python在函数中使用列表作为默认参数

    本文链接:https://www.haomeiwen.com/subject/iymfqctx.html