python は改行なしの文法は定義されているか


ruby 文法上改行がなくても記述できますが、 python に改行は必須ですか？

Makefile など、ほかのプログラムから python
の(ちょっとした)コマンドを呼ぶ際に、これができるのかできないのか気になったので、質問しています。




セミコロンである程度はできます。

[code]

    $ python -c "import sys; print(sys.version_info)"
    sys.version_info(major=3, minor=5, micro=1, releaselevel='final', serial=0)
    
[/code]

標準入力の処理など。

[code]

    $ echo "Hello World" | python -c "import sys; print(sys.stdin.read().split()[-1])"
    World
    
[/code]

if, forなどの制御構文を使えないので擬似的に実現するのは面倒です。

[code]

    $ python -c "a = input('Y/N? : '); print(['YES', 'NO'][0 if a=='Y' else 1])"
    Y/N? : Y
    YES
    
    $ python -c "a = input('Y/N? : '); print(['YES', 'NO'][0 if a=='Y' else 1])"
    Y/N? : N
    NO
    
[/code]




セミコロンである程度はできます。

[code]

    $ python -c "import sys; print(sys.version_info)"
    sys.version_info(major=3, minor=5, micro=1, releaselevel='final', serial=0)
    
[/code]

標準入力の処理など。

[code]

    $ echo "Hello World" | python -c "import sys; print(sys.stdin.read().split()[-1])"
    World
    
[/code]

if, forなどの制御構文を使えないので擬似的に実現するのは面倒です。

[code]

    $ python -c "a = input('Y/N? : '); print(['YES', 'NO'][0 if a=='Y' else 1])"
    Y/N? : Y
    YES
    
    $ python -c "a = input('Y/N? : '); print(['YES', 'NO'][0 if a=='Y' else 1])"
    Y/N? : N
    NO
    
[/code]

