关于python解释符的疑惑
今天学习到修饰符,在网上搜到两段关于修饰符的代码:第一段在python里直接运行就能出结果
但是第二段直接运行却没有结果,需要调用函数func()才能有结果。
第一段函数:
def test(f):
print ("before ...")
f()
print ("after ...")
@test
def func():
print ("func was called")
第二段函数:
def test(f):
def w():
print('add')
return f()
return w
@test
def func():
print('func was called')
这两段函数在我看来没啥区别,为啥第一段直接运行就能出结果,但是第二段却不行呢?很困惑
@test
def func()相当于func=test(func),test和func中的print都被执行了
第二段代码中test只是返回了w,没有执行w,所以没有打印。 qiuyouzhi 发表于 2020-4-2 16:16
因为return会直接终止函数的调用。
你完美的没有看题……{:10_327:} 永恒的蓝色梦想 发表于 2020-4-2 16:22
相当于,test和func中的print都被执行了
第二段代码中test只是返回了w,没有执行w,所以没有打印。
原来是这样!感谢!
还有一个问题:为什么第二段代码执行后,输入func()后就能运行并得到结果:
add
func was called
这是为啥呢?此时为啥就执行w了呢? 一路狂奔2020 发表于 2020-4-2 16:41
原来是这样!感谢!
还有一个问题:为什么第二段代码执行后,输入func()后就能运行并得到结果:
def test(f):
def w():
print('add')
return f()
return w
@test
def func():
print('func was called')@test后其实func就是test里面的w了 永恒的蓝色梦想 发表于 2020-4-2 16:42
@test后其实func就是test里面的w了
有点明白了!我再琢磨琢磨!感谢!{:5_106:}
页:
[1]