LoginSignup
93
89

More than 5 years have passed since last update.

それっぽいPythonコードのテンプレート

Posted at

ちょっとしたツールを書かなければならなくなったとき、それが碌につかったことがないPythonを指定されること、よくありますよね。

Python素人がそれっぽいコードを書くための最低限なところをまとめてみました。
ちょっと表現がよくないかもですが、パッと見で「大丈夫そうだな」と思ってもらえるのが目標です。

テンプレート

# -*- coding: utf-8 -*-

"""
    hoge_tools.py

    プログラム全体の説明を書きます。
    実行方法とか必要なライブラリとか、
    動作確認しているPythonのバージョンとか書くとよいと思いました
"""


from logging import getLogger, DEBUG

# ログの設定
logger = getLogger(__name__)
logger.setLevel(DEBUG)

# 定数です
NUM_SPHERE = 4
NUM_TRYSAIL = 3


def main():
    """ エントリポイントだよ。

    """
    logger.debug("mainの開始")
    func_fugafuga(1)


def func_fugafuga(parm1):
    """ なんか関数ですよ

        @param parm1: この引数はとくにつかいません
    """
    logger.error("エラーです!!")

class MyClass:

    def __init__(self):
        """コンストラクタの説明
        """
        self._pv_v = "インスタンス変数"

    def process(self, parm1):
        """ メソッドの説明
        """
        logger.debug("process")

    def _pv_process(self):
        logger.debug("_pv_process")


if __name__ == "__main__":
    main()

定数

# 定数です
NUM_SPHERE = 4
NUM_TRYSAIL = 3

Pythonでは定数を特に扱わないようなので、命名規約で縛ります。
全部大文字。

ロギング

# ログの設定
logger = getLogger(__name__)
logger.setLevel(DEBUG)

printを嫌って、ロギングにしてみました。
やってることは変わりませんが、printデバッグは避けた方が印象はよさそうです。

mainブロック

if __name__ == "__main__":
    main()

トップレベルに処理をガリガリ書くのではなく、mainとして実行されたときのみ処理が実行されるようにする、Pythonのスタンダードな方法です。
例えば、テストケースを書くときにこのpyをimportなどしたときなどはmainが実行されないので、便利です。

命名規約

関数名、変数名はスネークケース、クラス名はキャメルケース、プライベートは"_"始まり。
と、これくらいは問題ありませんが、変数名は悩ましい。
Pythonを書いていると型でちょっと苦労することがあるので、ハンガリアンで命名したほうがよいのかも。
ただ、ベターだとも思えない。
Pythonはリストと辞書のネストが深くなりがちだし、それをコメントで説明するのも微妙な気がする。

ドキュメンテーションコメント

あまりルールが決まっていないっぽいです。いくつかライブラリのコードを見て参考にしてみました。
特にパラメータなどはバラバラですね。パラメータの説明などはJavaっぽく「@param」と書いてしまいましたが、これは絶対ではありません。
使っているエディタとかによるかも。
とはいえ、内容をしっかり書いておくと、ちゃんとしたプログラムっぽく見えます(姑息)

さいごに

まず、Pythonのバージョンは2なのか3なのかは最初に決めておこう!(自戒)

おわりです。

93
89
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
93
89