str对象不可调用,将装饰器函数的返回改一下,这样改写就行了,参考http://c.biancheng.net/view/2270.html。
def add_out(func):
def add_in():
return f"《{func()}》"
return add_in
def add_out1(func):
def add_in1():
return f"¥{func()}¥"
return add_in1
@add_out
@add_out1
def book_name():
return 'sss'
print(book_name())
如对你有帮助,请点击我回答的采纳按钮采纳一下。
因为python中不能这样写字符串 需要用str函数
def add_out(string):
print(type(string)) #是字符串
def add_in():
return "《"+string+"》"
return add_in()
def add_out1(func):
def add_in1():
return "¥"+func()+"¥" #返回的是字符串
return add_in1()
@add_out
@add_out1
def book_name():
return 'sss'
print(book_name)
先执行def add_out1(func):
add_out1()中返回的是 "¥"+func()+"¥" 字符串
传到def add_out(string):中string就是字符串,不是函数了,字符串不能用()调用。
或者是 def add_out1(func): 的return add_in1 不加(),把add_in1函数返回
传到def add_out(func): 中 func就是函数了
def add_out(func): # func就是函数了
def add_in():
return "《"+func()+"》"
return add_in()
def add_out1(func):
def add_in1():
return "¥"+func()+"¥"
return add_in1 #不加(),把add_in1函数返回
@add_out
@add_out1
def book_name():
return 'sss'
print(book_name)