簡體   English   中英

如何在單行中使用if / else(python -c)?

[英]How to use if/else in single line (python -c)?

我剛剛開始學習python,我試圖在python -c中使用if / else語句,但我一直收到Invalid Syntax錯誤。 我想用python -c調用if / else的原因是因為我想在我的bash腳本中用if / else調用一些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

Try3

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

有關如何解決此問題的任何建議?

如果我想使用| elif | elif | else類型的聲明怎么辦?

提前致謝!

對於真正的通用解決方案 - 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
}

簡單一點,使用三元形式:

$ python -c "print 'A' if False else 'B'"

使用條件表達式和打印功能:

C:\> python -c "from __future__ import print_function; print('not wo
rking') if False else print ('working')"
working

試試吧:

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM