Python默认参数的陷阱

一:内置函数

  • globals()
  • locals()
1.返回的是字典,字典里面的键值对:全局作用域的全部内容
	print(globals())
    
2.返回的是字典,字典里面的键值对:当前作用域的全部内容
	print(locals())

二:默认参数的陷阱

1.默认参数:没传值,可变数据类型在内存中是同一个
def func(name, alist=[]):
    alist.append(name)
    renturn alist
r1 = fun('whj')
print(r1)		
>>>['whj']
r2 = fun('xhl')
print(r2)		
>>>['whj','xhl']


2.默认参数:传值
def func(a, alist=[]):
    list.append(a)
    renturn alist
print(func(10))
>>>[10]
print(func(20, []))
>>>[20]
print(func(100))
>>>[10, 100]

3.默认参数执行顺序
def func(a, alist=[]):
    list.append(a)
    renturn alist
r1 = func(10)
r2 = func(20, [])
r3 = func(100)
print(r1)
>>>[10, 100]
print(r2)
>>>[20]
print(r3)
>>>[10, 100]

三:局部变量与全局变量

1.在函数中,如果你定义了一个变量,但是在定义这个变量之前对其引用了,
  那么解释器认为是语法问题,应该在使用前定义
count = 1
def func():
    print(count)
    count = 3   ×
func()

2.global
  在局部作用域声明一个全局变量

3.nonlocal
  不允许操作全局变量
  内层函数对外层函数的局部变量进行修改(嵌套函数)

posted @ 2020-08-17 21:35  王韩六六  阅读(148)  评论(0编辑  收藏  举报