【问题标题】:Lodash for Python?用于 Python 的 Lodash?
【发布时间】:2016-02-10 14:24:46
【问题描述】:

是否有 Python 的库或类似于 lodash 的东西?我们在 API 上广泛使用该库,并且在继续创建一系列 Python 工作者时,创建与我们的 API 句法类似的结构是有意义的。

【问题讨论】:

  • 使用库会以何种方式改进您的工作流程,其中包含使用生成器、推导式、functools(映射、过滤器、reduce 等)和 lambdas 的数组、列表、集合和字典?我知道想要一个与您已经使用的工具类似的工具,但是当您充分使用 Python 时,该功能已经存在。虽然到目前为止链接的两个模块(pytoolz 和 pydash)都涵盖了 lodash/underscore 的仿真,但它们实际上只是基本 python 功能的装饰;理解语言比修改你知道的东西更好。
  • 我同意,但我们只是让我们的 NodeJS 团队更容易进入我们的 Python 项目。 Python 开发人员理解这些库的作用比 NodeJS 开发人员学习 Python 要容易得多。我希望弥合这一差距并缩短学习曲线。与大多数开发人员一样,在某些时候好奇心会占据上风,我们的 NodeJS 开发人员可能想了解幕后发生的事情。
  • 这里有一个例子: _.get(w, 'x.y.z') 在 python 中如果你执行 w.x.y.z 如果 w、x 或 y 为空,则会抛出异常。使用 _.get 你只会得到一个空值
  • @JeffLangemeier 我不同意。 pydash(和 lodash)提供了开发人员最需要/最常用的辅助函数。的确,其中一些很容易用普通的 Python 编写,但很多不是。如果您处于一个位置:使用 pydash 与自己编写辅助函数,那么您应该考虑到 pydash 函数已经过测试、优化并与 Python2.7&3 兼容,更不用说它已经编写好了。在我的工作中,我需要满足上述所有标准,使用 pydash/lodash 可以为我节省大量时间。作为奖励,我阅读了 pydash 代码来改进我的 python。
  • @m4js7er 既然你愿意删除我一​​年前的回复;您是否还愿意提供通过 pydash 提供的“难以优化”的 lambda/函数式编程范例的具体示例?我的观点仍然存在,JS 和 Python 是不同的语言,具有不同的范式和不同的应用程序......从 JS 中获取一些东西并尝试将其批量移植到 Python 可能会由于语言的差异而给用户带来意想不到的结果。

标签: python lodash


【解决方案1】:

pydash 与 lodash 完全相同,仅适用于 Python。

【讨论】:

  • 这正是我想要的!谢谢。
  • 请注意,如果您有一个包含对象的大数组,pydash 的某些方法(例如 pydash.arrays.uniq)的性能非常差。我已经遇到了这个问题。
【解决方案2】:

pydash 可以用来替代 python 中的 lodash。它几乎涵盖了所有内容,函数名称也相似,只是保持 python 的约定不变。

重要提示:我已经使用 pydash 大约 07 个月了,它对我帮助很大。您不应该忘记的一件事是,避免直接在 self 上使用 pydash 函数,它的行为非常不稳定并且会给出随机结果。我在下面展示一个例子。

示例类

class MyClass:
    def get(self):
       self.obj = {}
       self.obj['a'] = True

用法 类测试类: def 初始化(自我): self.inst = MyClass()

   def test_function(self):
      # **Not Recommended Method**
      # _.get(self, "inst.a")    # shows random behavior

      # **Highly recommended**
      _.get(self.inst, "a")     # Will always return True

【讨论】:

  • 使用_ 不是一个好主意。请将其更改为其他变量名称,例如 pydash 文档中显示的 py_
【解决方案3】:

好吧,我不确定这是否正是您要寻找的,但是当我想到下划线和 Lodash 之类的 javascript 库时,我会想到添加更多函数式编程功能的库(尽管我确实相信下划线和 lodash比这更实用)到一种语言。

有很多 Python 库尝试添加一些相同的功能。快速搜索让我得到了 pytoolz https://github.com/pytoolz/toolz,我没有太多经验,但看起来很有趣。如果这不是您要寻找的,请尝试搜索其他函数式编程 python 库,直到找到您喜欢的。

希望有所帮助

【讨论】:

  • 感谢您的建议,我想我真正追求的是简化数组、字典和类型的使用。
猜你喜欢
  • 1970-01-01
  • 2017-09-29
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多