柚子快报邀请码778899分享:默认参数的陷阱自我心得
默认参数的陷阱 :
默认参数实际上只有一个值
代码1
def func(l = 1):
l += 1
print(l)
func()
func()
func()
代码2
lst = []
def func(a,l = lst):
l.append(a)
print(l)func(1) # [1]
func(2,[]) # [2]
func(3) # [1,3]变量是变量,值是值
变量的名字和有多少个值没有对应关系
我们在看修改的时候:要看修改的是哪一个对应的值而不是变量
def func(l = []): # 在函数定义的时候 创建了个[]
pass # 对于默认参数来说,[]只定义一次
def func2(a = 0):
a += 1 a = a + 1 = 0 + 1 = 1 局部变量 会随着这个函数的调用而消失
print(a)func2()func2()
闭包的概念和代码
闭包: 内部函数使用了外部函数的变量,内部函数就是一个闭包
代码
def func(*args):
sum_num = 0
for num in args:
sum_num += num
def inner():
return sum_num
return inner
inner = func(1,2,3,4)
inner()
柚子快报邀请码778899分享:默认参数的陷阱自我心得
发表评论