PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

Pythonの関数(オブジェクト) と オブジェクト.関数() の違いは何ですか?

f:id:nana_yu:20180502143157p:plain

こんにちは。今日は「Pythonの関数(オブジェクト) と オブジェクト.関数() の違いは何ですか?」 という質問に回答します。

Python、ひいてはプログラミング言語全般な悩みではないかと思います。 何人かの方にご質問いただいたのでブログでも回答いたします。

Pythonの関数(オブジェクト) と オブジェクト.関数() の違いは何ですか?

これは少しヤヤコシイ問題ですね。

例えば len("文 字 列")"文 字 列" の長さを取得する関数なのに、 "文 字 列".split() は文字を空白文字で分割する メソッド (オブジェクト.関数) ですね。

基本的にはメソッドの場合は、そのオブジェクト固有の処理が多いです。 例えば "文字列".split"文字列".startswith などです。これは文字列固有です。

ですが len は文字列にも、リストにも使えます。 len("文字列") len([0, 1, 2]) なのです。こういった場合は、Pythonでは関数で用意されています。

また、printなどのように特定のオブジェクトの型に関係しない場合も関数で用意されます。

関連資料の紹介:PyCon JP 2017清水川氏の発表

PyCon JP 2017で清水川氏の発表がこの質問と近い内容でした。あわせてご紹介します。

発表スライド

goo.gl

発表動画

動画もあります。

www.youtube.com

発表の詳細

詳しくは、PyCon JP 2017 1日目 参加ログ #pyconjp — 清水川Webを参照ください。

PyCon JP 2017 トークの沢山の動画がYoutubeで公開されています。興味があるタイトルなどを探してみるのも秋の連休の長い夜の楽しみになりそうですね。

PyQブログの更新は、SNSで告知しています。

Pythonのお悩みを解決するコラムのほか、 PyQリリース情報・Pythonお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

twitter.com

PyQ公式Facebook

PyQ

ブラウザのみでPythonを学習できるオンラインサービス「PyQ」はこちら

pyq.jp

f:id:nana_yu:20180502115234p:plain

Copyright ©2017-2018 BeProud Inc. All rights reserved.