読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonで関数を作ってみた

プログラミング

Pythonで関数を作ってみた。

前回まで

ラズパイのCPU温度を計測したい→Fusion Tables API→OAuth2.0→google-api-python-clientPython

Pythonインタプリタの対話モードを実行してみた Pythonのモジュールとパッケージを作ってみた

開発環境

成果物

GitHubHelloMethod

関数

def method_name(param):
    return param

たったこれだけ。以下はC言語の関数。

int method_name(int param) {
    return param;
}

Pythonは返却値の型を書かない。というより、変数宣言も含め、型を書かない。その分タイプ数が減るので書くのは楽。

def

ところで、defって何?

おそらくdefineの略と思われる。定義という意味。だったらクラスだって定義では?なぜ関数がdefなの?そもそも、関数?メソッド?どっちなの?

というわけで調べたらこちらがヒット。感謝。

def は関数の 定義 (definition) を導くキーワードです。

最初、こちらがヒットしたが、そのURLではわからなかった(探すのが面倒くさかった)。私くらいのアホーともなると、上記くらいはっきり答えてくれないとわからない。

関数とメソッドの違い

項目 内容
関数 モジュール内で定義したもの(クラス内ではない)
メソッド クラス内で定義したもの(クラスはモジュール内にある)

「もの」って何。じゃあ変数でもいいのね、とかいう突っ込みはなしで。

アレだよアレ、なんか命令とか書いてるやつ。それをまとめるやつ。……頭悪そう。

メソッド

こちらから項目を俯瞰。"関数"と"メソッド"で文字列検索してみて付近の文言をみたところ、違いが予想できた。たぶんクラス内にある関数をメソッドと呼ぶのだろう。

こちらによると、

普通、メソッドはバインドされた直後に呼び出されます

x.f()

ようするに、メソッドはクラスのインスタンスから参照されるということだろう。たぶん。「普通」とある。普通でない異常な呼出方法もあるということか。C言語の関数ポインタ的なことができるのだろうか?まあいいや、深入りはしない。

ほかの言語

C++では、グローバル関数、メンバ関数、と言われるところを、Pythonでは、関数、メソッド、と言い分けているのだろう。

C言語ではクラスの概念がないし、C#はクラス内でしかメソッドを定義できないので、先述の区別はない。と思う。

リポジトリ名を間違えた

呼び方

日本語とカタカナ英語がごちゃまぜ。

プログラミング言語の話をしていると大抵はルー大柴みたいになる。

日本語 カタカナ英語 英語
関数(かんすう) ファンクション Function
方法(ほうほう) メソッド Method

メッソド、メソード、のようにカタカナ表記されることもある。どうでもいいが、関数は日本語なのにメソッドはカタカナ英語なので煩わしい。でも、方法だの方式だの、和訳してしまったら伝わりにくい。関数をファンクションというのも長くてウザい。

口で話すときに、短くて伝わりやすい響きのものを採用するのだろう。日本人は横着者、と。

所感

どうでもいいことばかり気になる症候群。

私、気になります病。

一貫性にこだわりすぎるのは、狭い心の現れである。by PEP8

細事にこだわり大事を逸する。

問題ない。お気づきか。私がアップしたGitHubリポジトリ名がMethodになっていることに。正しくはFunctionにすべきだった。間違いを知りながら放置している私はちっともこだわっていない。なんて心が広いんだ。