小编esp*_*ern的帖子

Python内部函数

在python中,我可以写:

def func():
    x = 1
    print x
    x+=1

    def _func():
        print x
    return _func

test = func()
test()
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出是:

1

2

由于_func可以访问func中定义的"x"变量.对...

但如果我这样做:

def func():
    x = 1
    print x

    def _func():
        x+=1
        print x
    return _func

test = func()
test()
Run Code Online (Sandbox Code Playgroud)

然后我收到一条错误消息:UnboundLocalError:在赋值之前引用的局部变量'x'

在这种情况下,似乎_func不能"看到""x"变量

问题是:为什么在第一个例子中打印x"看到""x"变量,而数学运算符x + = 1抛出异常?

我不明白为什么......

python

9
推荐指数
1
解决办法
3874
查看次数

无限列表上的foldl行为

我对列表中的foldl与foldr的理解是:

如果我们右边用函数s和一个起始累加器a折叠[0,1,2,3],我们这样做:

f 0 (f 1 (f 2 (f 3 a)))

如果我们使用函数s和起始累加器a 保留 fold [0,1,2,3],我们这样做:

f (f (f (f 0 a) 1) 2) 3)


鉴于:

elem_r :: (Eq a) => a -> [a] -> Bool
elem_r y ys = foldr (\x acc -> if x == y then True else acc) False ys
Run Code Online (Sandbox Code Playgroud)

elem_l :: (Eq a) => a -> [a] -> Bool
elem_l y ys = …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming fold

4
推荐指数
1
解决办法
137
查看次数

标签 统计

fold ×1

functional-programming ×1

haskell ×1

python ×1