gpt4 book ai didi

python - 使用 Python 进行正序参数评估

转载 作者:行者123 更新时间:2023-11-30 22:28:56 27 4
gpt4 key购买 nike

是否可以更改 Python 的默认行为,以便传递给函数的参数仅在传递后才进行计算?

而不是这个:

(lambda x: x)(str(1))

在将参数传递给函数之前完成字符串转换,我在最后考虑这种情况:

(lambda x: x())((lambda: str(1)))

由于延迟包装函数,现在 str 转换是在将参数移动到函数后完成的。

我对 AST 不太熟悉,但是它可以用来自动延迟函数参数的评估吗?

最佳答案

这就是做到这一点的方法,尽管它很笨拙。这些类型的构造(作为参数传递给其他函数的函数)通常称为“工厂函数”或“工厂”,当您需要做不止一件事时,它们通常是完整函数。有时,人们在为类实现替代构造函数时将它们设为 @classmethod(这些类方法通常以“from”开头,即 fromIterable())。但如果您可以使用 lambda,简单就比复杂更好。

另外,你在第二个示例中缺少一个右括号。

编辑:看起来您已修复它。

另外,至于 AST - 理论上是的。您可以将 AST 传递给函数 eval(),它会稍后对其进行评估。然而,您也可以传递一个字符串,并且手动创建 AST 过于复杂。你其实并不想深入探讨这个问题。更不用说 eval()exec() 由于能够执行任意 Python 代码而被弃用,因此恶意用户可能会导致 Python 解释器出现段错误/em> 如果您根据用户输入调用它。

底线:lambda 是必经之路,尽管这可能令人悲伤。

关于python - 使用 Python 进行正序参数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498349/

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