f(*a) a endと、
python:
f(*a):
return a
では、動作に決定的な違いがある。rubyでは、
f(*[1,2],3,*[4,5]) => [1,2,3,4,5]
のように、*arrayと他を組み合わせることができるけど、
pythonでは、
f(*[1,2],3,*[4,5]) => SyntaxError: only named arguments may follow *expression
と、エラーになってしまう。
pythonの場合、rubyのflattenに相当するものを作れば、以下のように回避できる
f(*flatten([[1,2],3,[4,5]]))
と、思っていたんだけど、もっと一般化した時に困る。
つまるところ、listと他の値を混在して、渡したい時に困る。
pythonの場合、そもそも、以下のように、配列を渡すようにするのが、現実的。
g([[1,2],1,[3,4],2])
0 コメント:
コメントを投稿