報告された「@」記号の位置から条件付きで文字列をスライスしたい状況があります。条件は次のとおりです。「@」が存在する場合は文字列をスライスし、それ以外の場合はそのままにします。関数を使用する方法と、インライン条件式を使用する方法の2つの方法を考えました。最もPythonicな方法はどれですか?
関数を使用する
>>> def slice_from_at(inp):
... res = inp.find('@')
... if res == -1:
... return None
... else:
... return res
>>> c = 'agent_address@agent_address'
>>> c[:slice_from_at(c)]
... 'agent_address'
インライン条件式の使用
>>> c = 'agent_address@agent_address'
>>> c[:None if c.find('@') == -1 else c.find('@')]
... 'agent_address'
インライン条件式の使用はより簡潔であり、より経済的であると主張する人もいるかもしれません-関数メソッドはより読みやすいのでよりPythonicですか?