Я бы использовал скобки, чтобы сделать выражение более читабельным:
return ('%.0f' % float_var) if float_var else float_var
Когда я впервые увидел его, я прочитал его как
return '%.0f' % (float_var if float_var else float_var)
что было бы глупо. Я должен был попробовать, чтобы убедиться, как это работает.
Кстати, ваш первый пример не эквивалентен вашему второму примеру
if float_var:
return formatted_string
else:
return None
Это всегда будет возвращать либо отформатированную строку, либо None. Ваш первый пример, если вы передадите что-нибудь, что оценивается как False (False, 0, 0.0, "", [] и т. Д.), Вернет это без изменений, поэтому тип возвращаемого значения может быть string, boolean, list, int, float и т.д. вероятно, не то, что вы хотите, особенно если 0.0 является допустимым значением для float_var. Я бы изменил ваш код на:
return ('%.0f' % float_var) if isinstance(float_var, float) else None
альтернативно:
try:
return "%.0f" % float_var
except TypeError:
return None
, который будет работать для других целых чисел (и длинных) путем преобразования их в число с плавающей точкой.