質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

4回答

13752閲覧

Pytnonの関数に()をつけないときがあるのはなぜ?

OkomekO

総合スコア30

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

5クリップ

投稿2019/12/09 13:02

関数に()をつけない時がなぜあるのか

現在Pandasの勉強をしており、Seriesオブジェクトに
count()関数をあてて要素数を求めようと思ったのですが、
.countと使うこともありますよね?
メソッドでも関数でも()をつけると思うのですが、前者は「関数」、後者なんなのでしょうか?

Python

1A = pd.Series([1,2,3,4,4]) 2A.count 3A.count()

具体的には、このような感じです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

次のコードを研究してみてください、

op.py

python3

1def inc(x): 2 return x + 1 3def dec(x): 4 return x - 1 5def mul10(x): 6 return x * 10 7 8ops = [inc, dec, mul10] 9 10n = 10 11print(inc(n), dec(n), mul10(n)) 12 13for op in ops: 14 print(op(n))

実行例

イメージ説明

投稿2019/12/09 22:35

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OkomekO

2020/09/23 07:27

opsでは関数としてオブジェクトをリスト化して op()で返り値を得ているのですね 考えの整理ができましたありがとうございました!
guest

0

メソッドでも関数でも()をつけると思うのですが、前者は「関数」、後者なんなのでしょうか?

括弧を付けないのは、関数自体orメソッド自体、括弧を付けると、その関数を呼び出した返り値、です。

数学で、sinは三角関数の一種、sin(π/2)は数値の1、です。それと同じ。

投稿2019/12/09 13:42

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OkomekO

2019/12/09 13:27

回答ありがとうございました。 返り値が異なることはわかっております。countを用いたことは具体例で、より一般的な()を使わない理由、そしてそれをなんと呼んでいるのか、を教えていただきたかったのです。 言葉足らずでした。回答していただいたのにも関わらず申し訳ありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問