相关疑难解决方法(0)

Python变量范围错误

以下代码在Python 2.5和3.0中按预期工作:

a, b, c = (1, 2, 3)

print(a, b, c)

def test():
    print(a)
    print(b)
    print(c)    # (A)
    #c+=1       # (B)
test()
Run Code Online (Sandbox Code Playgroud)

但是,当我取消注释行(B)时,我得到了UnboundLocalError: 'c' not assigned一行(A).的值ab被正确地打印.这让我感到困惑,原因有两个:

  1. 为什么在行(A)处抛出运行时错误,因为后面的行(B)语句?

  2. 为什么变量ab打印符合预期,同时c引发错误?

我能想到的唯一解释是,赋值创建了一个局部变量,即使在创建局部变量之前,它也优先于"全局"变量.当然,变量在存在之前"窃取"范围是没有意义的.cc+=1c

有人可以解释一下这种行为吗?

python variables scope

195
推荐指数
7
解决办法
6万
查看次数

是否有一个简单的基于进程的python并行映射?

我正在为python寻找一个简单的基于进程的并行映射,即一个函数

parmap(function,[data])
Run Code Online (Sandbox Code Playgroud)

这将在不同进程上的[data]的每个元素上运行函数(好吧,在不同的核心上,但是AFAIK,在python中在不同核心上运行东西的唯一方法是启动多个解释器),并返回结果列表.

这样的事情存在吗?我想要一些简单的东西,所以一个简单的模块会很好.当然,如果不存在这样的事情,我会选择一个大型图书馆: - /

python parallel-processing smp

62
推荐指数
4
解决办法
3万
查看次数

在python中是否存在等效于'map'的位置?

我有一个需要消毒的字符串列表.我有一种消毒方法,所以我可以这样做:

new_list = map(Sanitize, old_list)
Run Code Online (Sandbox Code Playgroud)

但我不需要保留旧列表.这让我想知道是否有一个相当于地图的就地.很容易为它编写for循环(或自定义就地映射方法),但是内置了什么?

python dictionary in-place

13
推荐指数
3
解决办法
7375
查看次数