1. 程式人生 > >Python預設引數陷阱問題

Python預設引數陷阱問題

def fun(a,l = []):
    l.append(a)
    print(l)

fun('hhh')
fun('mmmm')
fun('xingkd')

python中的def語句在每次執行的時候都初始化一個函式物件,這個函式物件就是我們要呼叫的函式,可以把它當成一個一般的物件,只不過這個物件擁有一個可執行的方法和部分屬性,對於引數中提供了初始值的引數,由於python中的函式引數傳遞的是物件,也可以認為是傳地址,只有def的時候初始化一次,然後在呼叫者和被呼叫者中都是共享的,所以在 func.func_defaults中只能看到一個預設引數,在該函式物件被初始化的時候就已經存在了。