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

IDLE返回print内容不是function name

请问为什么以下最后返回的print内容不是'call function...'呢?

http://img2.sycdn.imooc.com/5e3d69770001f41803300182.jpg

2020-02-07 源自:python进阶 2-11 86 浏览 2 回答

new_fn函数return fn, 就返回一个函数fn, 你这里传入abs(1)就没有按照你定义的new_fn来进行参数传入,应该接收一个函数名作为参数,然后赋值给一个变量,这样比较‘优雅’,f = new_fn(abs), print(f)将会打印你如图所示长字符, print(f(-1))注意f其实就是指向返回的函数, 会打印出内部函数最终的返回结果, call abs..., 这里注意f和f( )的区别, 一个是函数, 一个是调用函数

2020-02-09
回复 0
def new_fn(f):
   def fn(x):
      print('call'+f.__name__+'()')
      return f(x)
   return fn
new_fn(abs)(1)

试试

应该是abs(1)直接就是一个值,那么new_fn就当于你写的new_fn(1)此时由于fn未接收参数,对于fn内部的两句话完全没有执行,return fn直接返回fn所在的位置

2020-02-09
回复 0

qq_慕少2210022

那如果是想要返回'call'+f.__name__+'()' 再加上x*2的值可以返回吗
#1 2020-02-19 回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信