我正在使用html-requests库,但特定于库的知识在此问题中没有多大关系
results = asession.run(*[lambda m=j: get_size(m) for j in i])
[asession.run(f1, f2, f3, ...)
异步运行f1()
,f2()
,f3()
,依此类推,返回[f3(), f1(), f2()]
(返回的列表顺序有所不同)
问题是,我的get_size
函数可能会引发错误。
所以我想设置一些备用值。但是,使用lambda表达式时,无法插入try-except块。 (lambda函数仅允许在:之后的返回值,而不是表达式)
代替
[lambda m=j: get_size(m) for j in i]
以下类型的代码是否不可能? (当然,以下代码在语法上是错误的)
[def fn(m=j): try: return get_size(m) except: return 0 for j in i]
以下是唯一的方法吗?
def fn(m):
try:
return get_size(m)
except:
return 0
[lambda m=j: fn(m) for j in i]
在我的情况下,我喜欢一些单行列表推导,并且想知道在列表推导中是否可以使用命名函数定义(lambda之外的任何东西,因为lambda只允许返回值,因此受到限制)。
如果知道m
的值是什么导致错误(例如len(m)
为0),即Condition
,那么您可以像这样使用lambda表达式
f = lambda m : get_size(m) if not Condition else 0
[f(j) for j in i]