当前位置: 首页 > 面试题库 >

内置范围函数如何接受一个或三个参数?

聂鹏云
2023-03-14
问题内容

我想知道,如果有人能告诉我,范围函数如何采用:单个参数range(stop),或range(start, stop)range(start,stop,step)。它是否使用一个variadic参数*arg来收集参数,然后使用一系列if语句根据所提供的参数数量来分配正确的值?从本质上说,它range()规定,如果有一个参数,然后将其设置成停止争论,或者如果有两个那么他们start,和stop,或者如果有三个然后设置这些作为stopstartstep分别?我想知道如果要用纯Cpython编写范围怎么办。谢谢!!!

更新
:当我最初问这个问题时,我并没有澄清我想知道Cpython中的答案。谢谢您的所有答复!我发现它们都很有启发性。这种反馈让我喜欢和使它如此特别的人们!


问题答案:

范围采用1、2或3个参数。这可以通过def range(*args)和显式代码实现,当它获得0个或3个以上参数时引发异常。

无法使用默认参数来实现它,因为默认值之后不能再有非默认值,例如def range(start=0, stop, step=1)。从本质上讲,这是因为python必须弄清楚每个调用的含义,因此,如果要使用两个参数进行调用,python将需要一些规则来确定您要覆盖的默认参数。除了没有这样的规则,根本不允许这样做。

如果确实要使用默认参数,则可以执行以下操作:def range(start=0, stop=object(), step=1)并明确检查的类型stop



 类似资料:
  • 问题内容: 当使用范围表达式迭代大数组时,我应该使用Python的内置范围函数还是numpy来获得最佳性能? 到目前为止,我的推理是: 可能求助于本机实现,因此可能会更快。另一方面,返回一个占用内存的完整数组,因此可能会产生开销。Python 3的范围表达式是一个生成器,它不会在内存中保存所有值。 问题答案: 对于大型数组,numpy应该是更快的解决方案。 在numpy中,您应该结合使用向量化计算

  • 比方说,如果我想在和之间生成一个无偏随机数,我会这样做: 但是,如果我想生成一个介于和之间的随机数,但更偏向于一个介于和之间的值的程度呢?最好用概率曲线来说明:

  • 请编写一个名为lastElement的函数,该函数接受单个数组参数。函数应返回数组的最后一个元素(不删除该元素)。如果数组为空,则函数应返回null。 lastElement([3,5,7])//7 lastElement([1])//1 lastElement([])//null 我对最后一部分感到困惑,如果数组为空,函数将返回null。

  • 因此,我一直在寻找一个函数,该函数需要2个参数,一个低值和一个高值(均为64位整数),而不是在这些范围之间生成一个随机数。我一直遇到的问题是,这个数字不是64位int,或者边缘的数字比中间的数字更常见。 这是一些代码:它只是一直返回-1或0…

  • 问题内容: 我有这样的功能: 我试图根据类型返回不同类型的字符串。我只是停留在如何编写一个接受不同类型参数的函数上。 问题答案: 您可以将接口类型用作参数,在这种情况下,可以使用实现给定接口的任何类型来调用函数。在Go类型中,如果类型具有接口的方法,则它们会自动实现任何接口。因此,如果您想接受所有可能的类型,则可以使用空接口(),因为所有类型都可以实现该接口。无需对您的功能进行其他修改。 您还可以

  • 考虑一个用例,我有一个类似 现在我怎么能有 2 种不同类型的案例 用例-1 我如何接受swagger中的类形式的上述查询参数,我知道我们可以在swagger中将其定义为不同的单独参数,如下所示 但是使用这个swagger创建了一个带有字符串或整数参数的rest方法,拥有这么多的多个参数可能不是一个好主意,所以我强烈希望它创建一个如下所示的类,而我的rest是用这个类对象生成的。我如何将这个类应用到