Python 速记';如果';正在抛出语法错误

Python 速记';如果';正在抛出语法错误,python,if-statement,shorthand,Python,If Statement,Shorthand,我有一个argparser,它有一个verbose标志,我正在尝试最小化为获得verbose输出而必须写入的量 这与预期的效果一样: #!/usr/bin/python verbose=True print(verbose) if verbose: print("verbose output") 产出: $ ./example.py True verbose output 但是 抛出一个错误: $ ./example.py File "./example.py", line 5

我有一个argparser,它有一个verbose标志,我正在尝试最小化为获得verbose输出而必须写入的量

这与预期的效果一样:

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

$ ./example.py
True
verbose output
但是

抛出一个错误:

$ ./example.py
  File "./example.py", line 5
    print("verbose output") if verbose
                                     ^
SyntaxError: invalid syntax
我认为python有
语句if condition else condition
语法?我犯了什么错误吗

$ python -V
Python 3.6.2

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

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

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

对于这样的详细输出,最好使用以下模块:


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

如果Python
需要
否则
,如下所示:

x = 2 if y < 5 else 4
x=2如果y<5,其他4

if test
语法没有速记
,没有。只有条件表达式
if else
。它有
表达式if condition else表达式
语法。如果条件
,它没有
语句。您不应该在这里使用它,没有必要“缩短”任何内容。如果必须,请将表达式与
If
测试:
If verbose:print('verbose output')
放在同一行。您可能会想到Perl,它有这样一个语句修饰符。
日志记录是一个选项,但不一定是简单控制
打印
函数实际产生输出的合适方法。看,我读过,是的,我认为这正是它的目的。“报告程序正常运行期间发生的事件(例如用于状态监测或故障调查)”-这才是详细输出的真正目的。我这样认为:
print
用于实现程序的功能,日志记录用于描述程序的工作方式。根据OP希望详细消息的用途,我假设这似乎是在重新创建日志记录模块,但以一种更难理解的方式,它不是在重新创建日志记录模块。日志记录模块提供了许多方法来修改输出的确切内容、输出到何处以及是否获得输出(尤其是从配置文件加载日志配置时)。我唯一允许配置的是是否调用了
print
函数。如果调用了该函数,它所做的操作仍在编写的代码的完全控制下。
import logging
logger = logging.getLogger(__name__)
logger.debug('foo') # prints nothing
logger.setLevel(logging.DEBUG)
logger.debug('foo') # prints 'DEBUG:name:foo'
x = 2 if y < 5 else 4