0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの便利技と注意点:コードスタイル規約編

Last updated at Posted at 2024-04-19

目次に戻る

コードスタイルをチェックするライブラリ

  • pycodestyle
  • flake8
  • pylint
Terminalでの使用方法
>>> pycodestyle xxxx.py
>>> flake8 xxxx.py
>>> pylint xxxx.py
Jupyter Notebookでの使用方法
!pycodestyle xxxx.py
!flake8 xxxx.py
!pylint xxxx.py

importの規約

インポートの際、複数のライブラリをカンマでつなげない
import os, csv, sys
1ライブラリ1行使う
# アルファベット順
# 標準・サードパーティ・ローカルパッケージ・ローカルファイルのグループ順
# 各グループごとに1行空ける

# 標準ライブラリ
import csv
import os
import sys

# サードパーティライブラリ
import flask

# ローカルパッケージ
import mylib.funcA

# ローカルファイル
import local_settings
関数のみをインポートしない
# 関数のみをインポートすると、その関数がどのパッケージに属するのかわからなくなる
from pkgA.modA.modB import funcA

# モジュールごとインポートする
import pkgA.modA.modB

スペースの規約

インデントはスペース4つ
if a == b:
    print('yes')
辞書型の「:」の後はスペース1つ
d = {'A': 1000}
変数が2つ以上ある場合、「,」の後ろにスペース1つ
def example_func(a, b, c):
    print('example')

valA, valB = valB, valA
演算子の前後にスペース
x = y
a = b + c

# ただし、関数宣言時のデフォルト引数はイコール前後にスペース不要
def example_func(a, b, c='test'):
    print('example')

行の規約

行のあけ方
# importの下は2行空ける
# グローバルで宣言された関数やクラスの間は2行空ける
# クラス定義内メソッドの間は1行空ける

import os


class ExampleClass(a):
    """ExampleClass"""

    def __init__(self, b):
    self.b = b


def example_func(c):
    """example_func"""
    def sub_example_func(d):
        print('hello')
行の終わりにセミコロンをつけない
a = 1;
b = 2:
行の長さは80字を超えない
long_phrase = '80字以上でコーディングすると、非常に長くなって見にくくなるので、80字以内に収めるように記載して、長くなる場合は改行を活用してみやすくすること。'

# 但し、関数内docstringやコメントにURLを掲載する場合は80字超えてもOK
# URLについては改行するとコピーして貼り付けにくくなる
def example_func(a, b, c,
                 so_long_long_value_should_be_written_by_line_feed='example'):
    """
    :param a:
    :param b:
    :param c:
    :param so_long_long_value_should_be_written_by_line_feed:
    :return:

    Please refer to: http://www.abcdefg.com/hijklmn/opqrstu/vwxyz/again/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    """    

命名規約

クラスや関数の命名規則
# グローバル変数は、全て大文字で単語を「_」でつなぐ
# 大文字を使うことで間違えてグローバル変数を書き換えない目印にする
EXAMPLE_GLOBAL_NAME = 'example'

# クラス名は単語の頭を大文字にして「_」を使わずにつなぐキャメルケース
class ExampleClass(a):

# 関数は小文字の単語を「_」でつなぐスネークケース
def example_func(a):

# プロパティは処理を表すのではなく変数名のように書く
# returnで返すものは「_」をつける
@property
def func_name(self):
    return self._func_name

条件文の規約

ifの条件文で()を使う必要がない場合は使わない
if (xxx and yyy):
    print('True')

# 但し条件を見やすくする場合は()を使う
if (xxx and yyy) or (aaa or bbb):
    print('True')

例外処理の規約

全例外をExceptionにまとめない
# エラーの詳細がわからない
try:
    example_func()
except Exception as e:
    print(e)
クラスで独自の例外を作成してraiseする
# クラスの名前が例外処理に表示される
# どのファイルでエラーが発生したかわかりやすくなる

class ExampleError(Exception):
    def example_err_func(self):
        print('Example Error')

def example_func():
    try:
        func_a()
        raise ExampleError

TODOコメントの規約

あとでコード変更予定する時のコメント
# 「#」のあとに1スペースあけてTODOと書く
# さらに1スペースあけて「()」に自分を示す文字列(メアドの@の前等)を入れる
# このコメントにより該当箇所について担当者に質問しやすい上、他の人による書き換えを防ぐ
# 合同プロジェクトやオープンソースプロジェクトなどではメールアドレスをそのまま記載

# TODO (your_name) Will change for fixinig bug no.15

目次に戻る

0
0
3

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?