码迷,mamicode.com
首页 > 编程语言 > 详细

python里的默认参数

时间:2018-07-08 13:24:37      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:调用   显示   lis   end   append   开始   学习python   print   col   

 

def extendList(val, test=[]):
    test.append(val)
    return test
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList(a)
print("list1 = %s" % list1)
print("list2 = %s" % list2)
print("list3 = %s" % list3)
运行结果:
list1 = [10, ‘a‘]
list2 = [123]
list3 = [10, ‘a‘]

    如上述代码运行结果,我开始学习python的时候,也会认为list1应该输出10,list3应该输出a,但并不是这样的,在某方法默认参数为test=[],当调用该方法,当没有的为其传入值的时候,正如list1和list3显示的那样,他们两个调用的方法中操作的test对应的是同一地址空间下的list,所以会如此的输出。

   我们可以采用如下的方式来避免这样的问题:

def extendList(val, test=None):
    if test == None:
        test = []
    test.append(val)
    return test

 

python里的默认参数

标签:调用   显示   lis   end   append   开始   学习python   print   col   

原文地址:https://www.cnblogs.com/O-OK/p/9279731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!