py大神 发表于 2017-12-9 23:23:08

零基础Python第二十讲:

>>> def FunX(x):
        def FunY(y):
                return x*y
        return FunY()

>>> def FunX(x):
        def FunY(y):
                return x*y
        return FunY
return FunY不能加括号?

BngThea 发表于 2017-12-10 07:34:56

可以

像番茄加两个蛋 发表于 2017-12-10 08:00:52

就是一个返回值可以加的

py大神 发表于 2017-12-10 14:49:16

BngThea 发表于 2017-12-10 07:34
可以

>>> def FunX(x):
        def FunY(y):
                return x*y
        return FunY

>>> FunX(5)(8)
40
>>> def FunX(x):
        def FunY(y):
                return x*y
        return FunY()

>>> FunX(5)(8)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
    FunX(5)(8)
File "<pyshell#16>", line 4, in FunX
    return FunY()
TypeError: FunY() missing 1 required positional argument: 'y'
>>>
加括号和不加括号的区别。。。。。为什么会这样?
是因为FunY()没有输入参数么?那么第一个为什么不用输入参数?

BngThea 发表于 2017-12-10 15:31:04

py大神 发表于 2017-12-10 14:49
加括号和不加括号的区别。。。。。为什么会这样?
是因为FunY()没有输入参数么?那么第一个为什么不用 ...

不加括号返回的就是一个指向函数的指针,调用的时候需要加上括号才能实现函数功能
加了括号后就直接能实现函数功能了

py大神 发表于 2017-12-10 17:19:47

BngThea 发表于 2017-12-10 15:31
不加括号返回的就是一个指向函数的指针,调用的时候需要加上括号才能实现函数功能
加了括号后就直接能实 ...

那为什么加了括号的FunX(5)(8)会报错?
是不是因为加了括号的return FunY()会直接实现return x*y 从而忽略def FunY(y)?

py大神 发表于 2017-12-10 17:27:26

BngThea 发表于 2017-12-10 15:31
不加括号返回的就是一个指向函数的指针,调用的时候需要加上括号才能实现函数功能
加了括号后就直接能实 ...

他的报错说没有y的参数,但是不是给他了8么?

BngThea 发表于 2017-12-10 17:49:11

py大神 发表于 2017-12-10 17:27
他的报错说没有y的参数,但是不是给他了8么?

return的时候函数括号里面要写上y

liuL2 发表于 2017-12-10 20:17:56

{:10_243:}

py大神 发表于 2017-12-10 20:28:40

liuL2 发表于 2017-12-10 20:17


{:10_277:}
页: [1]
查看完整版本: 零基础Python第二十讲: