Python:参数列表中的Lambda

时间:2015-02-09 12:31:05

标签: 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
    )

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

由于

2 个答案:

答案 0 :(得分:1)

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)()
    )

这只是一个内联函数与闭包一起使用。

答案 1 :(得分:0)

如果将timeout定义为类变量,则确定对象状态的内容。如果您必须根据某些条件设置初始值,您可以执行以下基本操作之一:

  1. __init__

  2. 中对其进行初始化
  3. 使用@property decorator并定义getter,它会返回适用的值。