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

关于返回函数返回值的疑问

在这里开始卡了,好多疑问啊

 def f():
   print 'call f()...'    # 定义函数g:
   def g():
       print 'call g()...'    # 返回函数g:
   return g


>>> x = f() #为什么要这样调用,而不可以直接f()?

call f()

>>> x       #f()不是赋值给x吗?为什么直接x的是内存地址?

<function g at 0x00000000033FECF8>

>>> x()     #为什么x()是直接执行g()

call g()

>>> f()()   #为什么执行f()()跟x()效果不一样的?

call f()

call g()

>>> f()     #为什么执行f()跟x = f()是不一样的?

call f()

<function g at 0x00000000033FEA58>


求指点,谢谢

正在回答

2 回答

我也在学习过程中,我是这样理解的:

x=f() : 因为f()它的返回值是一个funtion, x就是一个函数,当你再调用x()时就会真正的去调用g()这个funciotn.

我在执行f()和x=f()都打印了“call f()...” 当你x=f(),这个过程是调用了f(),没有调用g().只是返回了g()函数

我用的是python 3.6.3的版本。


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

楼上说的没错,先执行x=f()在执行x(),和执行f()()是一样的,都是先调用f()函数,再调用f()里的嵌套函数

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

举报

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

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

进入课程

关于返回函数返回值的疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信