第一段代码
def foo(bar=None):
print("bar=",bar) #语句 1
if bar is None:
bar=[]
bar.append("baz")
return bar
print("1:",foo())
print("2:",foo())
输出如下:
bar= None
1: ['baz']
bar= None
2: ['baz']
第二段代码
def foo(bar=[]):
print("bar=",bar) #语句 2
bar.append("baz")
return bar
print("1:",foo())
print("2:",foo())
输出如下:
bar= []
1: ['baz']
bar= ['baz']
2: ['baz', 'baz']
我可以理解的是,当默认参数初始值为[]时,每次进入函数体时,bar 值会发生变化。
但是我不理解的是,为何当默认参数 bar 初始值为 None 时会导致刚进入函数体时的 bar 值始终为 None ? None 这个值具有什么特殊性么?谢谢
def foo(bar=None):
print("bar=",bar) #语句 1
if bar is None:
bar=[]
bar.append("baz")
return bar
print("1:",foo())
print("2:",foo())
输出如下:
bar= None
1: ['baz']
bar= None
2: ['baz']
第二段代码
def foo(bar=[]):
print("bar=",bar) #语句 2
bar.append("baz")
return bar
print("1:",foo())
print("2:",foo())
输出如下:
bar= []
1: ['baz']
bar= ['baz']
2: ['baz', 'baz']
我可以理解的是,当默认参数初始值为[]时,每次进入函数体时,bar 值会发生变化。
但是我不理解的是,为何当默认参数 bar 初始值为 None 时会导致刚进入函数体时的 bar 值始终为 None ? None 这个值具有什么特殊性么?谢谢