694061755 发表于 2017-10-5 19:06:18

关于内部函数的问题

>>> def funX():
      x = 5
      def funY():
                nonlocal x
                x *= 3
                return x
      return funY

>>> funX()()
15

问一下,funX()()前面()对应的是外面funX里的5,而后面的()对应的是里面funY里的3,是这么理解吗?请各位大神指教,谢谢!!!

Teagle 发表于 2017-10-5 20:06:15

funx()返回的是funy
funx()()就相当于返回funy()
你可以看一下这个例子{:5_91:} {:5_91:}


也可以换到列表理解
a= [,,]
此时a=
a就等于1

694061755 发表于 2017-10-5 20:20:59

Teagle 发表于 2017-10-5 20:06
funx()返回的是funy
funx()()就相当于返回funy()
你可以看一下这个例子


>>> def funX(x):
                def funY(y):
                        return x * y
                return funY
>>>funX(8)(5)
40

那这个怎么解释?funX(8)(5)

Teagle 发表于 2017-10-5 20:26:54

funX(8)此时给x赋值了8,函数返回的是funY

funY(5)此时给y赋值了5,函数返回的是x*y

即8*5

694061755 发表于 2017-10-5 20:29:21

Teagle 发表于 2017-10-5 20:26
funX(8)此时给x赋值了8,函数返回的是funY

funY(5)此时给y赋值了5,函数返回的是x*y


非常感谢,前一个问题也完全明白了,谢谢!!!

Teagle 发表于 2017-10-5 20:32:59

694061755 发表于 2017-10-5 20:29
非常感谢,前一个问题也完全明白了,谢谢!!!

客气了,这种思想,在字典+lamba里面经常会见到
贼好用{:5_91:}{:5_91:}
页: [1]
查看完整版本: 关于内部函数的问题