2013-09-24 2 views

ответ

1

Если ваша функция всегда возвращает bool, а затем просто распечатать его, как это:

print(f()) 

Если вам нужно преобразовать его в строку без печати, используйте str(f()) или repr(f()). Для типа bool эти два эквивалента, но, например, если их аргумент равен str, они разные: repr(str_obj) возвращает его правильно процитированным и экранированным.

Если это не всегда bool, но вы хотите напечатать что-то в зависимости от его значения истинности, то используйте if, как в вашем вопросе, так и в ответе iCodez. Кроме того, вы можете преобразовать его в логическое значение, а затем распечатать его:

print(bool(f())) 
+1

Я согласен с @LorenzoDonati. Это не написано как фактический ответ, а как ваше мнение. Вы должны сказать что-то вроде «Python booleans» реализует '__repr__' и' __str__' для печати своего значения истинности, так что 'print (f())' фактически эквивалентен фрагменту, который вы опубликовали, но более кратким. Python поощряет этот сжатый стиль , поэтому первая форма абсолютно в порядке ». –

+0

Спасибо за отзыв о моем ответе, я расширил его, чтобы быть более информативным. – pts

3

print автоматически преобразует входной сигнал в его строковое представление. Таким образом, эти два метода фактически выполняют одно и то же. Учитывая это, почему бы не использовать первое? Это намного чище.

Кроме того, второй метод действительно может быть упрощена:

print('True' if f() else 'False') 

Имея, что много кода для чего-то так просто не нужно.

0

Лично:

print(f()) 

форма выглядит лучше. Тем не менее, стоит подумать, что вы запекли в вызове распечатать то, что по сути отлаживает вывод с вызовом, вызывающим вызов функции. Это сделало бы это болезненным позже, когда вы захотите отключить все раздражающие заявления print, когда вы будете готовы использовать свою программу.

Вы могли бы вместо того, чтобы иметь такую ​​функцию, как:

LOGGING_ENABLED = True 

def print_if(my_bool): 
    if LOGGING_ENABLED: 
     print str(my_bool) 

Это гарантирует, что функция всегда вызывается, но отладочный вывод происходит только тогда, когда вы хотите.

Смежные вопросы