gpt4 book ai didi

python - 如何编写一个带切片的函数?

转载 作者:太空狗 更新时间:2023-10-29 18:03:45 25 4
gpt4 key购买 nike

我想用 Python 编写一个函数,它将一个切片作为参数。理想情况下,用户将能够按如下方式调用该函数:

foo(a:b:c)

不幸的是,Python 不允许这种语法 - a:b:c 的使用只允许在 [] 中使用,而不是 ().

因此,我看到了我的功能的三种可能性:

  1. 要求用户使用切片“构造函数”(其中 s_ 的行为类似于 the version provided by numpy ):

    foo(slice(a, b, c))
    foo(s_[a:b:c])
  2. 将我的函数逻辑放入 __getitem__ 方法中:

    foo[a:b:c]
  3. 放弃尝试切片并单独开始、停止和步骤:

    foo(a, b, c)

有没有办法让原来的语法起作用?如果不是,哪种变通语法是首选?或者还有其他更好的选择吗?

最佳答案

不要让您的用户感到惊讶。

如果您使用的切片语法与开发人员对切片语法的期望一致,则该开发人员会期望方括号操作,即 __getitem__() 方法。

如果返回的对象不是原始对象的一部分,那么如果您坚持使用 __getitem__() 解决方案,人们会感到困惑。使用函数调用 foo(a, b, c),完全不提及切片,如果有意义,可以选择分配默认值。

关于python - 如何编写一个带切片的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com