python函数的列表参数传递

今天看书的时候发现对python函数的参数传递不是很了解,于是上网查询了一下资料。首先,看一下以下的代码:

def default_para_trap(para=[],value=0):    
    para.append(value)    
    return paraprint('第一步')
print('函数返回值:{}'.format(default_para_trap(value=100)))
print('第二步')
print('函数返回值:{}'.format(default_para_trap(value=50)))

预测:

第一步
函数返回值:[100]
第二步
函数返回值:[50]

实际运行结果:

第一步
函数返回值:[100]
第二步
函数返回值:[100, 50]

这是因为没有传递列表参数,所以这里使用了默认的para参数,再看以下代码:

def default_para_trap(para=[],value=0):    
    print('id(para)={},para={}'.format(id(para),para))    
    para.append(value)    
    return paraprint('第一步')
print('函数返回值:{}'.format(default_para_trap(value=100)))
print('第二步')print('函数返回值:{}'.format(default_para_trap(value=50)))

代码运行结果:

第一步
id(para)=43268552,para=[]
函数返回值:[100]
第二步
id(para)=43268552,para=[100]
函数返回值:[100, 50]

从上面结果中可以看出,因为两次调用函数都没有传递para参数,所以默认使用初始值para=[](由两次调用的参数id相同可以发现)。如果想要达到预期的效果,只需要在函数体添加判断即可:

def default_para_trap(para=[],value=0):    
    if not para:  #初始化para参数        
        para = []    
    para.append(value)    
    return para
print('第一步')
print('函数返回值:{}'.format(default_para_trap(value=100)))
print('第二步')print('函数返回值:{}'.format(default_para_trap(value=50)))

运行结果:

第一步
函数返回值:[100]
第二步函数返回值:[50]

或者以下代码:

def default_para_trap(para=None,value=0):    
    if para is None:        
        para = []    
     para.append(value)    
     return paraprint('第一步')
print('函数返回值:{}'.format(default_para_trap(value=100)))
print('第二步')
print('函数返回值:{}'.format(default_para_trap(value=50)))

注:判断是否为None的时候可以使用"==",建议使用“is"

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,125评论 0 5
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,800评论 1 32
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,918评论 2 9
  • 1.检查单个值 SELECT column_name1,column_name2 FROM table_name ...
    寒雨苦沙阅读 1,046评论 0 0