Python3:内置函数“ map”是否有错误?

问题描述 投票:1回答:1

以下是我使用Python 3.8.1的情况(在macOS Mojave,10.14.6,如以及其他一些平台上的Python 3.7(或更旧版本))。我是新来的计算,不知道如何要求改进语言,但我认为我发现内置的奇怪行为功能map

随着代码next(iter(()))升至StopIteration,我希望从以下代码获取StopIteration

tuple(map(next, [iter(())]))

令我惊讶的是,它默默地返回了元组()

因此,当StopIteration来自next击中的“空”迭代器由iter(())返回。但是,我不认为例外是正确处理,因为在“空”之前未引发StopIteration从列表中选择了迭代器(由next击中)。

  1. 我是否正确理解了行为?
  2. 此行为是出于某种目的吗?
  3. 在不久的将来会改变吗?或如何获取?
python python-3.x behavior built-in map-function
1个回答
0
投票
  1. 我是否正确理解了行为?

不完全是。 map接受其第一个参数(一个函数),并将其应用到第二个参数可迭代的每个项目,直到它捕获StopIteration异常。引发此内部异常是为了告诉函数它已到达对象的末尾。如果您手动升高StopIteration,它将看到并停止,然后才有机会处理列表中的任何(不存在)对象。

© www.soinside.com 2019 - 2024. All rights reserved.