Python:参数列表中的Lambda

Python:参数列表中的Lambda,python,lambda,Python,Lambda,有没有一个很好的解决方案可以在参数列表中执行类似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 ) 我知道这会引发一个异

有没有一个很好的解决方案可以在参数列表中执行类似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
    )
我知道这会引发一个异常。但是有没有一个可能的解决办法来做这样的事情呢


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

  • \uuuu init\uuuuu

  • 使用并定义getter,它返回适用的值


  • 它只是一个内联函数,用于闭包。

    不清楚您在做什么。代码本身不会抛出异常,它是完全有效的;但是大概
    post
    方法不需要调用,所以我不明白为什么要传递一个。如果self.timeout不是self.timeout,为什么不能简单地执行
    timeout=0?同意@DanielRoseman。在这里使用lambda似乎没有任何优势。这是你的真实代码还是你用来回答这个问题的一个例子?谢谢@DanielRoseman。这只是一个示例代码。当然,如果self.timeout不是其他self.timeout,我应该执行timeout=0。我只是想知道是否有可能在参数列表中使用函数的返回
    
    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)()
        )