映射内部函数后字典未更新
Dictionary not updated after mapping inner function
我正在尝试使用应用内部函数的映射,以便使用外部函数的局部变量、字典。但是,我无法从内部函数修改字典。这应该是代码:
def outer_func():
def inner_func(x):
d[x] = 1
d = {}
map(inner_func, [1, 2, 3])
print(d)
outer_func()
这段代码的输出在python3中是{}
,而在python2中是{1: 1, 2: 1, 3: 1}
。我知道这是作用域的问题,然后我尝试在内部函数中使用 nonlocal
关键字(使用 python3),但这也没有用。如何使用映射和内部函数更新 python3 中的字典?
问题是 Python 3 中的 map
创建并 returns 一个迭代器。您的内部函数没有被调用,因为没有人使用迭代器。如果您在 inner_func
中添加了 print
语句,您就会看到它。
如果你这样做
list(map(inner_func, [1, 2, 3]))
你会发现它工作得很好
我正在尝试使用应用内部函数的映射,以便使用外部函数的局部变量、字典。但是,我无法从内部函数修改字典。这应该是代码:
def outer_func():
def inner_func(x):
d[x] = 1
d = {}
map(inner_func, [1, 2, 3])
print(d)
outer_func()
这段代码的输出在python3中是{}
,而在python2中是{1: 1, 2: 1, 3: 1}
。我知道这是作用域的问题,然后我尝试在内部函数中使用 nonlocal
关键字(使用 python3),但这也没有用。如何使用映射和内部函数更新 python3 中的字典?
问题是 Python 3 中的 map
创建并 returns 一个迭代器。您的内部函数没有被调用,因为没有人使用迭代器。如果您在 inner_func
中添加了 print
语句,您就会看到它。
如果你这样做
list(map(inner_func, [1, 2, 3]))
你会发现它工作得很好