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

python

请问为什么g()里面不用加参数呢


```

def calc_prod(lst):

    def g(lst):

        def a(x,y):

            return x*y

        return reduce(a,lst)

        

    return g


f = calc_prod([1, 2, 3, 4])

print f()

```

正在回答

4 回答

def prod(x, y):

    return x * y


def calc_prod(lst):

    def calc(num):

        lst.append(num)

        return reduce(prod, lst)

    return calc


f = calc_prod([1, 2, 3, 4])

print f(5)

能打印出:120


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

慕用1366169

忽略换行<br>
2019-10-12 回复 有任何疑惑可以回复我~
def outer(a):
    oCount = 1  # 闭包函数外作用

    def inner():
        iCount = 2  # 局部作用域
        print("作用域测试", a)
        return a
    return inner()


outer(1)

能打印出:作用域测试 1,所以inner方法能用outer参数的

0 回复 有任何疑惑可以回复我~
# 变量作用域
# Python的作用域一共有4种,分别是:
#
# L (Local) 局部作用域
# E (Enclosing) 闭包函数外的函数中
# G (Global) 全局作用域
# B (Built-in) 内置作用域(内置函数所在模块的范围)
# 内置作用域是通过一个名为 builtin 的标准模块来实现的


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

不清楚原理是什么,但是注意到第二层定义的函数中好像都没有参数

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

举报

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

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

进入课程
意见反馈 帮助中心 APP下载
官方微信