Python:命名規則覚書

 昨年のことですが会社でPythonを触る事があって、 その時は命名規則などは気にせず、ドキュメント見ながらバラバラ書いてたのですが
 最近、その言語で推奨する命名規則とかあるよなぁと、ふと気になったので探って見たのでした。もともとプログラム書く時は公式ルールみたいな物があればその例に倣って書くようにはしてるんですよ。作るの優先て時もあるって事ですね。
(既存のプロジェクトが固有のコーディングスタイルを規定しているならば、そちらに従うべきですけども)

さてと、それでは、〜本題〜
Pythonのコーディング スタイルにおいては「PEP8」とか「PEP257」という物があるらしいので興味があったら調べよう。僕も暇があったら覚えようって言う途中の段階なのですよ。

変数名:cur_position (小文字 & スネークケース)
関数名:calculate_function(小文字 & スネークケース)
クラス名:MyClass (先頭大文字 & キャメルケース)
モジュール名:my_module (小文字 & スネークケース)
パッケージ名:package (小文字 & スネークケース)
定数:STAR_BACKS (大文字 & スネークケース)

という感じでした。まずは何も考えずにやれる所から始めていくスタンスです。
(課題:アンダースコアのルール面倒なので追い追い覚えよう。とりあえずは "_" を付けたら非公開メンバーって覚えておくのだ。) 
色々教えあえる人はほしいね。(なんか微妙だけどいらないって言ったら嘘だわ)

それで、今回調べてたら、ちょっといいな!って思った所がありました。 関数に付けるコメントです。

def func():
    """
    関数の説明だよ
    """
    return 0;

こんな感じで、関数名の直下にコメントをつけるスタイルナウいですね。今まで触ってきた言語にゃ無かったので斬新な感覚でした。しかも表題名があってその下に書くってのがまた自然な感じで受け入れやすいと思いました。

で!
これで終わりでは無かったのだ。

実はPythonにはDocstringという言語の機能があるようなんですね。 関数呼び出しの要領で整形されたドキュメントを表示させられるのです。 *1

help(func)

または

print(func.__doc__)

これはそもそも__doc__属性に保存されると言う言語の仕様があるらしいですね。
(課題課題:暇があったら属性のことも調べておかないとだな。)

実際に動作する事をPythonのREPLからも確認できました!
こんな風に表示されたよ。 f:id:joint1:20180605013814p:plain
(help(func)実行時のもの。コメントが違うけど気にしないでね)

これが、外部ツールではなくて言語の機能として初めから組み込まれてるという所がモダンですねぇー。関心しました。こんなことで関心してしまうとは古い人間かもしれませんが。そこはご愛嬌ですよ。

クソダサい俄かC/C++erでごめんなさいって感じです。 C++は知り合いに聞いてもゲレゲレしてて嫌いって言われるから辛いんですが。 確かにその人の言う通りなところもあって苦しめられることも多いけど、僕は好きだよC/C++ 11以降。
ただ、Linus神も嫌ってるC++だからね!、そこは見習って嫌いになりたいとも思っていたりする。(微妙な問題

同様に "モジュール"と、"クラス"についてもdocstringを付けられるので付けていきましょう!

"""
Module infofmation.
"""

class Wasabi():
    """
    Class information.
    """
    def func():
        print("PiyoPiyo")
        return 0

こんな感じなんですかね。

君も今日から Let's try!!! だぜ!!

¥e


オライリーですよね

入門 Python 3

入門 Python 3

ノンプログラマーできますかね、理想的ですが

KivyでGUI作ってあげようかなって思ったんだけど、結局停滞中

Pythonは割りかしモダンで楽だからPGの人は入門用とか読んでも仕方ないもんな。これあればいいのかな?

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

追記:しがない雑談をちょっと書こうのつもりが想定より長くなってしまった。

*1:manコマンドみたいな物ですね