如何在一行中使用if/else(python -c)?
我刚开始学习Python,想在使用python -c的时候用if/else语句,但总是出现无效语法的错误。我想用python -c来调用if/else,因为我想在我的bash脚本中调用一些Python模块。这样做可以吗?我希望继续使用python -c,而不是python -m。
下面是我到目前为止尝试的内容
尝试 1
python -c "if False: print 'not working';else print 'working'"
File "<string>", line 1
if False: print 'not working';else print 'working'
^
SyntaxError: invalid syntax
尝试 2
python -c "if False: print 'not working';else: print 'working'"
File "<string>", line 1
if False: print 'not working';else: print 'working'
^
SyntaxError: invalid syntax
尝试 3
python -c "if False:; print 'not working';else:; print 'working'"
File "<string>", line 1
if False:; print 'not working';else:; print 'working'
^
SyntaxError: invalid syntax
有没有什么建议可以帮我解决这个问题?
如果我想使用if|elif|elif|else这样的语句呢?
提前谢谢你们!
4 个回答
2
试试这个:
python -c "print 'val1' if False else 'val2'"
如果有几个条件,可以试试这个:
expression1 if condition1 else expression2 if condition2 else expression3
比如给一个变量设置一个值:
myvar = "val1" if a>10 else "val2" if a==10 else "val3"
3
使用条件表达式和打印函数:
C:\> python -c "from __future__ import print_function; print('not wo
rking') if False else print ('working')"
working
5
简单点,使用三元表达式:
$ python -c "print 'A' if False else 'B'"
7
如果你想要一个真正通用的解决方案,python -c
其实并不只限于一行代码。
python -c '
if True:
print "hello"
else:
print "world"
'
当然,如果你真的想的话,可以把你的多行字符串格式化成一行:
python -c $'if True:\n\tprint "hello"'\nelse:\n\tprint "world"'
...不过,很明显,这其实是个非常糟糕的主意。
如果你真的非常想把Python代码放在shell里,为什么不试试用函数呢?更进一步,为什么不使用带引号的heredoc来写你的代码呢?(这样做可以让你保持代码的原样,同时通过argv传递参数)。
python_argv_repr() {
python - "$@" <<'EOF'
import sys
print sys.argv[1:]
EOF
}