python之函数参数问题(参数为可变对象)

匿名 (未验证) 提交于 2019-12-02 22:56:40

今天看到一段代码,其中函数入参有一个参数为list,类似如下:

def linux_monitor(pid=0,pidlist = []):
pidlist.append(pid)

通过测试发现是有问题的,在其中加入print和调用即可发现(使用默认参数值调用俩次):

def linux_monitor(pid=0,pidlist = []):
pidlist.append(pid)
print(pid)
print(pidlist)

linux_monitor()
linux_monitor()

第二次调用的时候,pidlist并不是空的

所以对于可变参数,特别需要注意,如列表等都可能产生这样的问题

我们可以对代码做如下处理即可正常使用:

def linux_monitor(pid=0,pidlist = None):
  if pidlist == None:
    pidlist = []
  pidlist.append(pid)

大家可以试一下

原文:https://www.cnblogs.com/watertaro/p/9278846.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!