柚子快报邀请码778899分享:默认参数的陷阱自我心得

http://www.51969.com/

默认参数的陷阱 :

默认参数实际上只有一个值

代码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分享:默认参数的陷阱自我心得

http://www.51969.com/

查看原文