Python: 参数列表中的 Lambda

Python: Lambda in Parameter List

是否有一个很好的解决方案来在参数列表中执行类似此 lambda 函数的操作?

timeout = None

[...]

 response = self.session.post(
        url=self.baseUrl,
        data=str(data),
        headers=headers,
        timeout=lambda: 0 if self.timeout is None else self.timeout
    )

我知道它会引发异常。但是有没有可能的解决方案来做这样的事情?

谢谢

如果您将 timeout 定义为 class 变量,那么它是 决定对象状态的东西 。如果您必须根据某些条件设置初始值,您可以执行以下基本操作之一:

  1. 初始化在__init__

  2. 使用@property decorator并定义getter,returns适用值。

timeout = None

 response = self.session.post(
        url=self.baseUrl,
        data=str(data),
        headers=headers,
        timeout=(lambda: 0 if self.timeout is None else self.timeout)()
    )

这只是一个与闭包一起工作的内联函数。