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