我有一个带有详细标记的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
答案 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")