【发布时间】:2021-05-12 18:54:40
【问题描述】:
我有一个方法 foo,我作为线程运行。我想将条件作为参数传递。 foo 采取了很多步骤。在每个步骤之后,如果满足唯一条件,我希望 foo 返回。
def foo(self, condition, other_args):
self.do_stuff(other_args)
if condition:
return
self.do_other_stuff(other_args)
if condition:
return
等等。
我将使用的示例条件是 (self.attribute == value) OR (self.dif_attribute == dif_value)
我一直在尝试创建一个 lambda 函数
condition = lambda value: value == self.attribute 和 conditional_2 = lambda value == self.dif_attribute
所以要添加更多信息,我这样称呼 foo:
thread = threading.Thread(target=self.foo,
kwargs={"condition": condition,
"other_args": self.bar})
thread.start()
thread.join()
但我不确定如何传递该值并且似乎无法使其工作。 lambdas 是最好的方法吗?还是应该有一个我没有看到的更简单的答案。
为了澄清我试图将条件(self.attribute == 'string')作为参数传递给方法。这样它就可以在这样的方法中使用:
if condition:
使用 python3.6 不确定这是否重要
【问题讨论】:
-
传递
lambda可以正常工作,传递完整的命名函数也是如此。请详细说明“似乎无法正常工作”是什么意思。 -
你怎么打电话给
foo? -
那些
lambdas 不起作用,大概是因为self未定义,您可以将self作为参数传入 -
你从哪里得到
value? -
@kinshukdua 值是我要验证的字符串。所以我想检查一个属性是否设置为特定的字符串值。
标签: python python-3.x lambda parameter-passing