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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

3671閲覧

pythonの組み込み関数について

hogeshi_

総合スコア47

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

1グッド

0クリップ

投稿2016/06/23 16:57

以前も同じ質問をしたのですが、思うような回答が得られなかったため再度質問させていただきます。
http://docs.python.jp/2/library/functions.html#abs
pythonにはいくつもの組み込み関数が用意されていますが、なぜクラス、関数まとめて組み込み関数としているのでしょうか。
例えばbytearrayはbytearrayという同名のクラスを返す関数である」という回答を頂いたのですが、bytearray()は class bytearray(省略)と説明されており、
実際にtypeで確認してみたところ、<class 'type'>が返ってきました。
これはbytearrayがtypeのインスタンスであることを示しており、つまりtypeのインスタンスはクラスなのでbytearrayはクラスなのではないか。と考えました。
実際に他の組み込み関数をtypeでみて見ると、abs()などは<class 'builtin_function_or_method'>が返ってきました。absの説明はabs()と関数として説明されています。
組み込み関数とは関数だけではないのですか。
納得のいく説明をしていただけないでしょうか。よろしくお願いします

nob2200👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

リファレンスで少し触れられていますが、以前は関数だったみたいですね。
実際、Python2.1.3に切り替えて実行してみると

Python

1>>> type(abs) 2<type 'builtin_function_or_method'> 3>>> type(int) 4<type 'builtin_function_or_method'> 5```となりました。 6 7ということで、この頃のドキュメントでは組み込み関数と呼ぶのは正しく、今はクラス名になりましたが 8`int("3")`とすればint型に変換できたりと表面上は関数のように見えるので、ドキュメントはそのままなのだと推測します。

投稿2016/06/24 03:47

dawns

総合スコア35

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

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

0

納得のいく説明は無理と思われます。あなたの指摘どおり、おかしいと言われても仕方がないと思います。たぶん、2. Built-in Functionsにあるクラス(ご指摘のbytearrayやlistなど)は4. Built-in Typesにあればよく、両方で説明するべきではないんです。

これには歴史的経緯もあるかもしれません。太古のPythonにはclass自体がありませんでしたが、今では第1級オブジェクトがクラスですから・・・。

投稿2016/06/24 03:21

編集2016/06/24 03:37
sharow

総合スコア1149

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問