#!pythondeflogger(func):definner(*args,**kwargs):print("Argumentsare:%s,%s"%args,kwargs)returnfunc(*args,**kwargs)returninner@loggerdeffoo1(x,y=1):returnx*y@loggerdeffoo2():return2foo1(5,4)foo1(3,y="alex")foo2()出错是:Argumentsare:5,4{}Traceback(mostrecentcalllast):File".\decorator.py",line18,infoo1(3,y="alex")File".\decorator.py",line5,ininnerprint("Argumentsare:%s,%s"%args,kwargs)TypeError:notenoughargumentsforformatstring我用的python是3.4.0
2 回答
森林海
TA贡献2011条经验 获得超2个赞
这个其实跟python3和decorator关系都不太大,是因为print用法有些错误,应该写作如下形式,注意括号。print("Argumentsare:%s,%s"%(args,kwargs))
慕工程0101907
TA贡献1887条经验 获得超5个赞
自己找到了答案,原来print函数百分号后面的要使用tuple,应该是下面这样才对。print("Argumentsare:%s,%s"%(args,kwargs))另外,查到说现在百分号的形式不太使用了,应该用print("Argumentsare:{0},{1}".format(str(args),str(kwargs)))更好
添加回答
举报
0/150
提交
取消
