Python 速记';如果';正在抛出语法错误
我有一个argparser,它有一个verbose标志,我正在尝试最小化为获得verbose输出而必须写入的量 这与预期的效果一样: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
#!/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