python def 参数一直为false_在Python 3中,如果参数为False,则查找惯用的方法来评估为False...

我有一连串的功能,全部定义在课程其他地方:

fus(roh(dah(inp)))

其中inp是字典或bool(False).

期望的结果是,如果inp或任何函数评估为False,则False由函数堆返回.

我试图使用三元运算符,但是它们不能正确评估.

def func(inp):

return int(inp['value']) + 1 if inp else False

抛出一个TypeError,bool不可下标,如果i == False,因为inp [‘value’]在条件之前被求值.

我知道我可以明确地做:

def func(inp):

if inp == False:

return False

else:

return inp['value'] + 1

但是有很多功能,这几乎是我代码长度的四倍.它也一次又一次地重写完全相同的代码行,这对我来说这是做错事的方式.

我怀疑有参数的装饰者是答案,但是我玩的越多,我就越不肯定.

def validate_inp(inp):

def decorator(func):

def wrapper(*args):

return func(inp) if inp else False

return wrapper

return decorator

@validate_inp(inp)

def func(inp):

return int(inp['value']) + 1

不幸的是,装饰器调用引发了一个NameError,’inp’没有定义.但我不知道我是否正在使用装饰器,或者装饰器是错误的解决方案.

寻找评论,批评,建议和/或健康检查.

如果你发现这个试图解决你自己的问题?

你可能想要使用空字典而不是布尔值False.道具到@chepner.

在我的应用程序中,使用False是“好的”,没有提供任何优势,并导致一些块状的代码块.

我发现一切都比较简单,使用一个空字典.我正在使用带有装饰器的函数,通过引用dict [‘value’],其中dict为空,捕获引发的KeyError.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值