如果我要装饰器要调用下面的now函数,是必须重新在now函数上写log吗

如果我要装饰器要调用下面的now函数,是必须重新在now函数上写log吗

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通

def log(func):
def wrapper():
print('call %s():' % func.__name__)
func()
return wrapper

@log
def hello():
print("hello world")

def now():
print('2018-11-27')

now()
hello()

过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

http://img1.sycdn.imooc.com//climg/5fb292ee09ca2a2a03180489.jpg这样可以


但是放到再上一层,就必须把now函数定义提到前面了,如下,不提上会报错,至于为什么我就不懂了

http://img1.sycdn.imooc.com//climg/5fb29365092244fd05310584.jpg

  • 同学,你好,程序在从上到下加载时,def是定义函数,而now()是调用now函数,此时还没有定义该函数,因此调用会报错
    2020-11-17 12:03:51
好帮手慕小轩 2020-11-17 12:03:23

同学,你好,不用重新再log上面写now函数,直接在wrapper内部调用now即可

http://img1.sycdn.imooc.com//climg/5fb34b78094eb92306450841.jpg


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师