Java教程

函数传参指定默认列表与不指定默认列表

本文主要是介绍函数传参指定默认列表与不指定默认列表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

def extendList(val, list=[]):
    list.append(val)
    return list

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']

 

说明:

  很多人都会误认为list1=[10],list3=[‘a’],因为他们以为每次extendList被调用时,列表参数的默认值都将被设置为[].但实际上的情况是,新的默认列表只在函数被定义的那一刻创建一次。

当extendList被没有指定特定参数list调用时,这组list的值随后将被使用。这是因为带有默认参数的表达式在函数被定义的时候被计算,不是在调用的时候被计算。因此list1和list3是在同一个默认列表上进行操作(计算)的。而list2是在一个分离的列表上进行操作(计算)的。(通过传递一个自有的空列表作为列表参数的数值)。

  

这篇关于函数传参指定默认列表与不指定默认列表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!