У меня есть ситуация, когда я хотел бы условно вырезать строку из указанной позиции символа '@';условие: нарезать строку, если есть «@», иначе оставить ее нетронутой.Я придумал два способа, один с использованием функции, другой с помощью встроенного условного выражения.Какой метод является наиболее 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'
Хотя использование встроенного условного выражения является более кратким и,кто-то может поспорить, что он более экономичен - является ли метод функции более питонским, потому что он более читабелен?