一:内置函数

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

不允许操作全局变量

内层函数对外层函数的局部变量进行修改(嵌套函数)