我有一种情况,我想有条件地从报告的'@'符号位置切片一个字符串; 条件是:如果'@'在那里,则对字符串进行切片,否则保持不变.我想到了两种方法,一种是使用函数,另一种是使用内联条件表达式.哪种方法最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'
Run Code Online (Sandbox Code Playgroud)
使用内联条件表达式
>>> c = 'agent_address@agent_address'
>>> c[:None if c.find('@') == -1 else c.find('@')]
... 'agent_address'
Run Code Online (Sandbox Code Playgroud)
虽然使用内联条件表达式更简洁,但有些人可能认为更经济 - 函数方法更具Pythonic,因为它更具可读性?
python coding-style ternary-operator conditional-expressions