简写'if'抛出语法错误

时间:2017-08-04 13:31:59

标签: python if-statement shorthand

我有一个带有详细标记的argparser,我正在尝试最小化我必须编写的数量以获得详细输出。

这可以按预期工作:

#!/usr/bin/python
verbose=True
print(verbose)
if verbose:
    print("verbose output")

输出:

$ ./example.py
True
verbose output

#!/usr/bin/python
verbose=True
print(verbose)
print("verbose output") if verbose

抛出错误:

$ ./example.py
  File "./example.py", line 5
    print("verbose output") if verbose
                                     ^
SyntaxError: invalid syntax

我认为python有statement if condition else condition语法?我犯了一些错误吗?

$ python -V
Python 3.6.2

3 个答案:

答案 0 :(得分:1)

对于像这样的详细输出,您最好使用Logging模块:

import logging
logger = logging.getLogger(__name__)
logger.debug('foo') # prints nothing
logger.setLevel(logging.DEBUG)
logger.debug('foo') # prints 'DEBUG:name:foo'

您可以更新其使用的字符串的格式,链接在文档中。

答案 1 :(得分:1)

Python if ternary operator syntax需要else,如下所示:

x = 2 if y < 5 else 4

答案 2 :(得分:-1)

定义print的别名,根据verbose的值打印其参数或不执行任何操作:

if verbose:
    print_verbose = print
else:
    def print_verbose(*args, **kwargs):
        pass

print_verbose("This only gets printed if verbose is True")