アプリ版:「スタンプのみでお礼する」機能のリリースについて

pythonで、
a = np.random.rand(*x.shape)

と書いた場合、x.shapeが(2, 3)の場合、
a = np.random.rand(2,3)

と書いた場合と同じになるようですが、この場合*はどのような意味で使われているのでしょうか?
pyuthonではstarred expressionと呼ばれているようですが。

詳しい方、御教示ください。

A 回答 (2件)

    • good
    • 1

タプルやリストの要素が展開されて、引数として渡されます。



以下の例で、関数fooは引数を二つ必要とします。
foo( *(1,2) )では、タプルの要素が展開されて2つの引数として関数に渡されているので正常な結果となりますが、foo( (1,2) )ではタプルが1つの引数として関数に渡されているので'b'にあたる引数が無いというエラーになっています。


In [1]: def foo(a, b):
...: print("a = ", a)
...: print("b = ", b)
...:

In [2]: foo( *(1,2) )
a = 1
b = 2

In [3]: foo( (1,2) )
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-25681da674e9> in <module>()
----> 1 foo( (1,2) )

TypeError: foo() missing 1 required positional argument: 'b'
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!