python - 避免空列表的默认参数的pythonic方法是什么?

标签 python

有时,有一个空列表的默认参数似乎很自然。然而Python produces unexpected behavior in these situations .

例如,如果我有一个函数:

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)

第一次调用时,默认会起作用,但之后的调用会更新现有列表(每次调用一个 "a")并打印更新的版本。

那么,获得我想要的行为的 Pythonic 方法是什么(每次调用都有一个新列表)?

最佳答案

def my_func(working_list=None):
    if working_list is None: 
        working_list = []

    # alternative:
    # working_list = [] if working_list is None else working_list

    working_list.append("a")
    print(working_list)

The docs说你应该使用 None 作为默认值并明确地使用 test for it在函数体中。

关于python - 避免空列表的默认参数的pythonic方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366422/

相关文章:

python - Pandas 匹配字典 'else'

python - Cassandra Spark 写入速度慢

python - 在 Python 中即时在磁盘上构造稀疏矩阵

python - 为数据框中的每一行绘制图表并保存为 jpg 格式?

python - 如何在 python 中查找有关函数的信息?

python - Ubuntu 在使用 Firefox 的系统启动时运行 python 脚本

python - 需要帮助理解 python 中的 "TypeError: default __new__ takes no parameters"错误

python - Discord 机器人无法使用 Python 在 Heroku 上运行

pythonpath改变后找不到Python打包工具

python - 为什么 `if Exception` 在 Python 中工作