1

Python 2.7 では、なぜ機能しないprint(*[1,2])のですか? って意味じゃないprint(1,2)

私の状況により具体的に:

import numpy as np
n = np.array([1,2,3,4]) % create and manipulate numpy array
print(*n.tolist()) % print results

splat 関数が機能した場合、次の質問は次のようになります。

  1. でこぼこのアレイでも動作しますか?
  2. 操作の順番は?tolist()つまり、最初に実行されますか、それともスプラットですか?

...(迅速な対応に感謝します)。私はそれprint()が関数ではないことを受け入れますが、csv.writer.writerow?

より具体的にしましょう:

import numpy as np
import csv
n = np.array([1,2,3,4])           # create and manipulate numpy array
print(*n.tolist())                # print results
flName = 'C:\Users\Joe\test.csv'
fl = open(flName, 'wb')
writer = csv.writer(fl)
writer.writerow(*n.toList())     # ERROR with splat
fl.close()

さて、関数と見なされるものと見なされないものは何だろうか?

4

3 に答える 3

1

Python 2 ではprint、関数ではなくステートメントであるため、実際には引数を取りません。"call" するとprint(1, 2)、実際に tuple が出力され(1, 2)ます。

引数をアンパックするには関数が必要なので、Python 3 のprint関数をファイルの一番上にインポートします。

from __future__ import print_function
于 2013-06-28T23:30:08.997 に答える
0

print(1,2)関数だったらということprintです。そうではありません - それは声明です。その(1,2)場合、実際には単なるタプルであり、関数呼び出しではありません。

あなたの場合、 print は関数ではないため、スプラットする必要はありません。

関数呼び出しの外ではスプラできません。

于 2013-06-28T23:29:34.417 に答える