開発環境 †
Python †
データサイエンスメインで考えている場合は、Anacondaが便利である。
拡張機能のビルドやCに馴染みがある場合は、pipで入れていけば良いと思う。
- Anaconda
- データサイエンスで使用されるパッケージがまとまったディストリビューション
- https://www.continuum.io
- Python
コーディングスタイル †
コードチェックツール †
flake8 †
コーディングスタイルをチェックしてくれる。
php install flake8
sample.py
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
- https://pypi.org/project/flake8/
- https://flake8.pycqa.org/en/latest/
- https://github.com/PyCQA/flake8
保守性・可読性のチェック †
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
- https://pypi.org/project/radon/
- https://github.com/rubik/radon
- https://radon.readthedocs.io/en/latest/
エディタ †
VSCodeが軽量で使いやすい。
以下からダウンロードできる。
- VSCode
- PyCharm
関連リンク †
'python' には、下位層のページがありません。