moritetuのIT関連技術メモ

開発環境

Python

データサイエンスメインで考えている場合は、Anacondaが便利である。
拡張機能のビルドやCに馴染みがある場合は、pipで入れていけば良いと思う。

コーディングスタイル

コードチェックツール

flake8

コーディングスタイルをチェックしてくれる。

php install flake8

sample.py

  1. def hello():
  2.   print("hello")
  3.    print("world")
  4.  
  5. hello()
  6.  
  7. print({"foo":1})

flake8でチェックすると以下のようになる。
ソース付きで表示してみよう。

flake8 --show-source test.py
test.py:2:3: E111 indentation is not a multiple of four
  print("hello")
  ^
test.py:3:1: E305 expected 2 blank lines after class or function definition, found 0
   print("world")
^
test.py:3:1: E272 multiple spaces before keyword
   print("world")
^
test.py:3:1: E999 SyntaxError: invalid character in identifier
   print("world")
^
test.py:7:13: E231 missing whitespace after ':'
print({"foo":1})
            ^

URL

保守性・可読性のチェック

radon

pip install radon

bad.py

def deep_nest(data):
    for k, fruits in data.items():
        for name, info in fruits.items():
            if name in ['apple', 'orange']:
                if 'count' in info:
                    if info['count'] > 10:
                        print(f'{name}: {info["count"]}')


deep_nest({
    'fruits': {
        'apple': {
            'count': 10
        },
        'orange': {
            'count': 20
        }
    }
})

radon cc(Cyclomatic Complexity)でチェックしてみる。
ランクがAであるほど良い。

 radon cc -s bad.py
bad.py
    F 1:0 deep_nest - B (6)

スコアテーブルは以下のとおり。

    ============= =====================================================
        1 - 5        A (low risk - simple block)
        6 - 10       B (low risk - well structured and stable block)
        11 - 20      C (moderate risk - slightly complex block)
        21 - 30      D (more than moderate risk - more complex block)
        31 - 40      E (high risk - complex block, alarming)
        41+          F (very high risk - error-prone, unstable block)
    ============= =====================================================

URL

エディタ

VSCodeが軽量で使いやすい。
以下からダウンロードできる。

デバッガ

pdb

import pdb; pdb.set_trace()

prdb

インストール

pip install rpdb

プログラム内に記述

import rpdb; rpdb.set_trace()

リモートから接続

nc 127.0.0.1 4444

参考

ptvsd

pip install ptvsd
import ptvsd; ptvsd.enable_attach()

参考

関連リンク

'python' には、下位層のページがありません。

参考リンク


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP