在python interpreter -c命令中使用条件

kev*_*nmm 6 python command-line conditional

我试图弄清楚如何将以下条件语句传递给python解释器的命令选项(-c).

if sys.maxsize > 2**32:
    print '64'
else:
    print '32'

64
Run Code Online (Sandbox Code Playgroud)

但是,我不断得到语法错误,如下所示:

>python -c "import sys; if sys.maxsize > 2**32: print '64' else: print '32';"
  File "<string>", line 1
    import sys; if sys.maxsize > 2**32: print '64' else: print '32';
                 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我发现很难找到这种用法的好例子.我一定在这里错过了一些大事......

lvc*_*lvc 5

在(非常)简短的搜索之后,我无法在任何地方找到这个,但似乎-c严格地采用表达式(即,可以出现在赋值的RHS上的东西),而不是声明.要在你的情况下解决这个问题,你需要做两件事:

  1. 使用print函数(函数调用是表达式)而不是print语句
  2. 使用Python的a if b else c 条件表达式

这给你:

lvc@tiamat:~$ python -c "from __future__ import print_function; import sys; print('64' if sys.maxsize > 2**32 else '32')"
64
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于带有`print`语句的2.0. (2认同)