python写if_用python编写if-else的更优雅的方法

首先,去掉不必要的括号;它们只会使代码的结构更难理解:def b(self):

if self.a() == 'Buy':

return 'BUY SET'

elif self.a() == 'Sell':

return 'SELL SET''

然后移除导致其引发SyntaxError的杂散':

^{pr2}$

接下来,不要调用self.a()两次。虽然在这里是无害的,但在实际代码中,它很有可能会产生副作用,或者至少需要足够长的时间来浪费时间:def b(self):

order = self.a()

if order == 'Buy':

return 'BUY SET'

elif order == 'Sell':

return 'SELL SET'

接下来,如果a只返回'Buy'或'Sell',则返回{}。这真的是你想要的吗?如何解决这个问题取决于你实际想要什么。例如,您可能希望:def b(self):

order = self.a()

if order == 'Buy':

return 'BUY SET'

elif order == 'Sell':

return 'SELL SET'

else:

raise ValueError("Unexpected order type '{}'".format(order))

或者可能:def b(self):

order = self.a()

if order == 'Buy':

return 'BUY SET'

else: # We know there's nothing else it could be

return 'SELL SET'

如果您有两种以上的可能性,那么将东西放入dict而不是使用if/elif链,或者编写动态代码。示例:def b(self):

return {'Buy': 'BUY SET', 'Sell': 'SELL SET', 'Trade': 'TRADE SET',

'Barter': 'BARTER SET', 'Steal': 'STEAL SET'}[self.a()]

def b(self):

return '{} SET'.format(order.upper())

请注意,对于前一个问题,这些选项做出了不同的选择。dict版本将引发一个未知值的KeyError;format版本只将任何内容视为有效。在

另外,如果您使用dict,您可能需要将它移到b函数之外—例如,将其作为一个类属性(这也鼓励您给它起一个好名字)。在

不过,只有两个选择,我认为你的选择要清楚得多。在

最后,给函数赋予一个无意义的单字母名称并不是很像Python;最好这样做:def get_formatted_order(self):

order = self.calculate_order()

if order == 'Buy':

return 'BUY SET'

elif order == 'Sell':

return 'SELL SET''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值