# 大坑如下:如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是同一个。以下代码打印结果请读者自行执行查看结果,分辨、区分,注释部分打开后,执行结果也会不同。
# 这里没有将结果贴出来,建议自己执行体会后,读者能更加深刻的了解到这个特别的注意点!
##例如:
def func(a, list=[]):
list.append(a)
return list
# print(func(10,))
# print(func(20, []))
# print(func(100,))
ret1 = func(10,)
print(ret1)
ret2 = func(20, [])
print(ret2)
ret3 = func(100,)
print(ret3)
# python是解释型语言,那么解释器在解释语言的时候,一定是先声明,再执行。所以,例如1、例如2 的代码,执行会报错。
##例如1:
def func ():
print(count)
count = 3
func()
例如2:
count = 1
def func ():
count += 1
print(count)
func()
##下面这个例子就可执行成功,注意因为加了关键字global,与其相对应的关键字是nonlocal。
(1)global在局部变量声明一个全局变量
(2)nonlocal局部作用域,内层函数对外层函数的局部变量进行修改
例如3:
count = 1
def func ():
global count
count += 1
print(count)
func()
例如4:
def wrapper():
count = 1
def inner():
nonlocal count
count += 1
print(count)
inner()
print(count)
inner()
wrapper()