liudaocen 发表于 2021-4-21 19:24:01

函数修饰符的调用问题

本帖最后由 liudaocen 于 2021-4-21 19:47 编辑

题主在学函数修饰符的时候,看到这样一段代码,不明白了里面的f()是什么意思。


def test(f):
    print "before ..."
    f()
    print "after ..."

@test
def func():
    print "func was called"

我想他就是函数test的一个参数,怎么能被调用呢?

yuxijian2020 发表于 2021-4-21 19:48:14

参数是函数指针就可以调用啊

liudaocen 发表于 2021-4-21 20:08:53

yuxijian2020 发表于 2021-4-21 19:48
参数是函数指针就可以调用啊

那这个op()存在的意义是什么?

yuxijian2020 发表于 2021-4-21 20:10:41

liudaocen 发表于 2021-4-21 20:08
那这个op()存在的意义是什么?

存在的意义是可以调用不同的函数

yuxijian2020 发表于 2021-4-21 20:14:38

liudaocen 发表于 2021-4-21 20:08
那这个op()存在的意义是什么?

阿奇_o 发表于 2021-4-21 20:22:17

你把 函数看做也是一种对象,就比较好理解了。
@test
def ... 这种写法叫 装饰器/修饰器。其本质是 函数嵌套。

这里的情况,我觉得写得很怪,甚至是有错误。。

你可自己先搜搜关于python装饰器的解释,应该有更好的例子。

liudaocen 发表于 2021-4-21 20:24:30

yuxijian2020 发表于 2021-4-21 20:14


感谢!
你写的这段代码我觉着好绕啊哈哈哈,我是个小白,目前能力和思维方式还不是很成熟。还是需要多多学习。

Stubborn 发表于 2021-4-22 11:13:52

python对参数没有严格限制,可以是任何对象,包括不限于,类,函数,数据类型。

liudaocen 发表于 2021-4-22 15:36:30

Stubborn 发表于 2021-4-22 11:13
python对参数没有严格限制,可以是任何对象,包括不限于,类,函数,数据类型。

了解{:10_323:}
页: [1]
查看完整版本: 函数修饰符的调用问题