Shorthand 'if' 抛出语法错误

Shorthand 'if' is throwing a syntax error

我有一个带有详细标志的 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

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

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

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

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

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

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

Python if ternary operator syntax 需要一个 else,像这样:

x = 2 if y < 5 else 4