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

大家看看我这么写是不是闭包?

def passline ( total , val ):
    def ispass():
        if val >= total*0.6:
            print 'pass'
        else:
            print 'failed'
    return ispass()

passline(100,89)

ps: 我在写这段代码时,发现个现象,就是如果是 return  ispass, passline(100,89)就执行不了,passline(100,89)()这样才行,那我看视频中return 的值就没带括号。那是不是带不带括号都可以 ?

正在回答

5 回答

带(),返回的是函数执行的结果,不带则返回的是function对象,执行function对象时要带()。

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

慕粉3212516 提问者

非常感谢!
2016-06-23 回复 有任何疑惑可以回复我~

def passline (total):
   def ispass(val):
       if val >= total*0.6:
           print 'pass'
       else:
           print 'failed'
   return ispass
f = passline(100)
f(90)
f(39)

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

def passline ( total ):
    def ispass(val):
        if val >= total*0.6:
            print 'pass'
        else:
            print 'failed'
    return ispass()
 
f=passline(100)
f(60)

这样才更加闭包吧


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

念小東

您这个 ispass 后面不能带()的吧 带了是运行不了的
2017-08-12 回复 有任何疑惑可以回复我~

闭包是内部函数引用了外层函数的变量,然后返回内层函数的情况

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

应该返回ispass

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

举报

0/150
提交
取消
python装饰器
  • 参与学习       50142    人
  • 解答问题       50    个

本门python教程将代领大家轻松搞定Python装饰器运用

进入课程

大家看看我这么写是不是闭包?

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