相对应的写出了他的解释:
对于我们的函数来说,是可以传递的,把他当做变量来传递
def bar():
print('bar)
baz=bar#此时把bar的功能传给了baz
baz()#打印的结果也是bar
也就是说我们想调用函数的时候才会在函数后面加上小括号,当作为变量传递的时候就只需要函数名
在说一说闭包的概念
一个函数内部是可以调用函数外部的变量的,我们都知道函数内部之间的变量称为局部变量,那么我们在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并返回值是内函数的引用,这样就构成了闭包
def outer()
a=10
def inner():
b=10
print(a)
return inner
if __name__=='__main__':
inner_func=outer()
inner_func()
一般情况下函数结束会释放a的内存,但是在闭包中,如果外函数在结束的时候发现有自己临时变量将来会在内部函数中使用,就把这个临时变量绑定给内部函数,然后在自己结束
一个简单的闭包,我们可以通过__code__属性查看他的自由变量和局部变量。
对于闭包中对数据的修改时,若为不可变类型时,只可以读取,不可以修改,可以导入nonlocal声明,把它标记为自由变量,这样在函数中赋值时候,也会变成自由变量,
我们的装饰器也是闭包的一种,不过传入进来的是一个函数而不是一个变量。
我们在使用@+函数名的时候,成为语法糖
来看看 部分内置函数
字典的一些使用方法:
以及常遇到的一些异常抛出类型