関数に()をつけない時がなぜあるのか
現在Pandasの勉強をしており、Seriesオブジェクトに
count()関数をあてて要素数を求めようと思ったのですが、
.countと使うこともありますよね?
メソッドでも関数でも()をつけると思うのですが、前者は「関数」、後者なんなのでしょうか?
Python
1A = pd.Series([1,2,3,4,4]) 2A.count 3A.count()
具体的には、このような感じです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
関数もメソッドもただのオブジェクトです。
Python
1>>> print 2<built-in function print> 3>>> list.sort 4<method 'sort' of 'list' objects> 5>>> [1, 2, 3].sort 6<built-in method sort of list object at 0x000001DCA552DA48>
他のオブジェクトにも括弧を付けることも、構文上は可能です。
呼び出し可能オブジェクトでないのなら当然エラーを吐きますが。
Python
1>>> 1() 2Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4TypeError: 'int' object is not callable
前者は「関数」、後者なんなのでしょうか?
この場合関数ではなくメソッドですね。
前者は『メソッドそのもの』を返し、後者は『メソッドを呼び出した結果』を返します。
活用例
例えば高階関数を活用する際には、『関数/メソッドそのもの』を受け渡しする必要があります。
一番長い文字列を選ぶ
Python
1>>> lst = ['spam', 'ham', 'egg', 'foo', 'bar', 'foobar'] 2>>> max(lst, key=len) 3'foobar'
0~9の値が登場する回数を調べる
Python
1>>> lst 2[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8] 3>>> 4>>> for n in map(lst.count, range(10)): 5... print(n) 6... 71 82 95 107 113 124 133 142 154 164
投稿2019/12/09 13:35
編集2019/12/09 13:48総合スコア35668
0
投稿2019/12/09 22:35
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
返り値が異なっているはずです。
python
1A.count 2#output 3<bound method Series.count of 0 1 41 2 52 3 63 4 74 4
python
1A.count() 2#output 35
投稿2019/12/09 13:13
退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。