我刚刚开始学习python,我试图在python -c中使用if / else语句,但我一直收到Invalid Syntax错误。我想用python -c调用if / else的原因是因为我想在我的bash脚本中用if / else调用一些python模块。是否可能,我想坚持使用python -c而不是python -m?
以下是我到目前为止所尝试的内容
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
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
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类型的声明怎么办?
提前致谢!
答案 0 :(得分:6)
对于真正的通用解决方案 - python -c
不限于单行。
python -c '
if True:
print "hello"
else:
print "world"
'
当然,如果您真的想要,可以将多行字符串格式化为一行:
python -c $'if True:\n\tprint "hello"'\nelse:\n\tprint "world"'
......但是,很显然,这是一个非常糟糕的主意。
如果你真的,真的想在shell中包装Python代码,为什么不使用函数?甚至比这更好,为什么不为你的代码使用引用的heredocs? (这样做可以让你保持代码本身的文字,通过argv传递参数)。
python_argv_repr() {
python - "$@" <<'EOF'
import sys
print sys.argv[1:]
EOF
}
答案 1 :(得分:5)
简化,使用三元形式:
$ python -c "print 'A' if False else 'B'"
答案 2 :(得分: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"