在Python中,万物皆对象,函数也是一个对象,也可以作为参数传递给别的函数。
foo这只是一个标识符,它可以指向任何东西,包括变量、类、函数、模块、流等。timer是一个返回函数的高阶函数,它的返回值是一个函数,赋值给foo之后,foo也就是一个函数。
没有学过c的,都有这一类问题
函数定义后,函数存入内存中的一个地址,你眼睛看到的foo,是一个函数名字,用来记载这个功能在哪,方便你用。你也可以给这个内存中的地址期其他名字,比如,fcc=foo,fxx=foo,都是指向同一个内存地址。
你传入的fun,只是一个地址,你可以直接print(fun)看看是不是输出一个内存地址。当你用fun()时,函数被调用执行了。
至于第二个问题,foo只是一个名字,前面我们说过了,函数名是一个内存地址,你肉眼看到的foo,具体在python里面,它是一个指向这个地址的对象。具体字这个问题里面,原作者是想解释装饰器的作用~你当然可以用Foo之类的代替。但这样就没表达出装饰器的作用了
了解下c的指针,程序的运行原理,这种问题就一眼就懂
python. 如果只是研究算法,集合(set)是可以变的,它是一个无序不重复元素集 元组(touple)才是不可变的