python的默认参数

python的默认参数

python可以使用变量作为默认参数,但是该变量必须在函数定义之前就已经声明。比如

i = 1
def func( _i = i ):
	print(_i)
func()	#1

同时,对于python,默认参数在函数定义的时候就已经计算好了

def func( list=[] ):
    list.append('a')
    print(list)

func()	#['a']
func(['b'])	#['b','a']
func()	#['a','a']

可以发现第1次和第3次执行func都是针对同一个list(默认list),这是因为默认参数在函数定义时就已经计算出来,且这个计算只进行了一次,就算第3次调用func用的还是默认的list。第2次参数不是默认的list,但是它不影响默认值的状态。

再看看闭包,这里的list对于每一个inner是独一份的。一个闭包一份环境

def outer():
    list = []
    def inner():
        list.append('a')
        print(list)
    return inner()   

outer()
outer()
原文地址:https://www.cnblogs.com/friedCoder/p/12710542.html