【问题标题】:i am creating a function by lambda expression as below:-我正在通过 lambda 表达式创建一个函数,如下所示:-
【发布时间】:2019-10-13 04:52:10
【问题描述】:

我正在通过 lambda 表达式创建一个函数,如下所示:

f=lambda x,y:True if x!='' else False if y!=''  else None

现在当我通过在其中传递字典值来使用此函数时

inv_d={'B2BNo':'','B2CNo':B2B-0038} 
print(f(inv_d['B2BNo'],d['B2CNo'])

它抛出错误:-

_io.TextIOWrapper' object is not callable

不确定我在这里做错了什么?

【问题讨论】:

  • 你的意思是传递f(inv_d['B2BNo'],inv_d['B2CNo'])?或者告诉我们d 是什么。另请注意,您错过了一个结束括号。

标签: python lambda wrapper


【解决方案1】:

我强烈反对将函数编写为 lambda 的在线赋值。嵌套三元也是一种巨大的代码气味。写的话更容易写,也更容易调试

def f(x, y):
    if x: return True
    if y: return False
    return None

以下应该有效:

inv_d = {'B2BNo':'',
         'B2CNo':'B2B-0038'}
print(f(inv_d['B2BNo'], inv_d['B2BNo']))

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多