为了账号安全,请及时绑定邮箱和手机立即绑定

我把r=f(*args,**kw)换成return f(*args,**kw)就运行不成功,为什么

我把r=f(*args,**kw)换成return f(*args,**kw)就运行不成功,为什么

正在回答

3 回答

def log(f):
   def wrapper(*args, **kw):
       print 'call...'
       return f(*args, **kw)
   return wrapper
@log
def f2(x):
   pass
print f2.__name__

你看这个就没有,怎么可以呢,难道跟被装饰的函数有无返回值有关

0 回复 有任何疑惑可以回复我~

懂了,谢谢,基础不扎实!

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//59a5042500011da201680087.jpg

return是关键字,要求是:要在函数内才能使用 return,并且在函数内,return之后的内容都会无效,

比如:

http://img1.sycdn.imooc.com//59a5038b0001a1d901950134.jpg

运行结果:

http://img1.sycdn.imooc.com//59a503e90001329b01050045.jpg

所以return一般都是在函数最后写的


如果你不在函数里面就直接用  return

比如下面这样就会出错:

http://img1.sycdn.imooc.com//59a502540001a0be04290091.jpg

意思是说:语法错误,return在function外面


回到你说的内容:

r=f(*args,**kw)

中的

f(*args,**kw)就是在执行函数

让r=f(*args,**kw)就是让r指向这个函数返回的结果(即函数f中return的内容)

这时候的r就是函数中返回的那个结果(不是函数,是函数返回的结果)

所以

return f(*args,**kw)运行不成功是因为

f(*args,**kw)在执行完后没有任何东西指向函数f返回的结果

f(*args,**kw)函数在执行完后就完了,结果呢?放在哪里?

所以你 return f(*args,**kw)就相当于 return (这里没有结果而是空的,因为你没有东西指向返回的结果)


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255532    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

我把r=f(*args,**kw)换成return f(*args,**kw)就运行不成功,为什么

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号