私はPythonの*argsと**kwargsが動作することを理解しようとしています。4つの引数を取る関数を考えてみましょう。*xを使用して関数の引数としてリストxを渡すことができます
def foo(a,b,c,d):
print a,b,c,d
x=[1,2,3,4]
foo(x)
#TypeError: foo() takes exactly 4 arguments (1 given)
foo(*x)
#1 2 3 4 # works fine
print "%d %d %d %d" %(*x)
#SyntaxError: invalid syntax
正しければ、foo()* xが値を解凍する場合...それでは、なぜprint "%d %d %d %d" %(*x)
??
の場合にエラーが発生するのでしょうか。
注-リストを1行で印刷する方法には興味がありませんが、なぜ機能しprint "%d %d %d %d" %(*x)
ないのか興味があります。