# Pythonコーディング - その他
###### tags: `note`
USB\VID_05AC&PID_12A8\A1D2AC5736F4A9F0E2B99FD1E855319649D2F732
https://mandrillapp.com/track/click/31095621/api.codemagic.io?p=eyJzIjoiRTd1Q1pPUEtoVzRVOXZNV2lfVE12TjVOR2RzIiwidiI6MSwicCI6IntcInVcIjozMTA5NTYyMSxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL2FwaS5jb2RlbWFnaWMuaW9cXFwvYXJ0aWZhY3RzXFxcL2RjNDUzM2EzLTA3ZDEtNGI4Yy1iNmU0LTgxZDYxNWY1ODhkNlxcXC9hYzY2YzQ5NC03NTk3LTQ1ZGYtYjJjNy02OTQwOTMyN2MyMmNcXFwvaGVhbHRoY2FyZS5pcGFcIixcImlkXCI6XCI4YTU1MWU4ZWU1ZmE0NWY3ODcyYjU4OTJhZTdhODgzN1wiLFwidXJsX2lkc1wiOltcIjc4NzBlMDY3OGIxNjczOWY0NWFkYzVmOGQwY2Y4YmE5MTVlZTNhNThcIl19In0
## コメント
下記のような目的でプログラミングの際にはコメントを使用することがあります。
- 読み手(未来の自分も含む)にプログラムの意図を伝えるため
- デバッグや保守を容易に行うため
- まだ実装していないが、必要な事項(TODO)記述のため
- プログラムが想定通り動作しない時、原因特定のためや任意のプログラムをコメントアウトするため
Python ではコメントの記述にインラインコメントとブロックコメント、複数行コメントの3つの方法が使えます。
### インラインコメント
Python では、 `#`から行末までは実行時に無視されます。
これは「インラインコメント」と呼ばれ、デバッグやメモに使用されます。
例.
```
x = np.arange(1, 12) # x=[1 2 3 4 5 6 7 8 9 10 11]``
```
### ブロックコメント
インラインコメントと同様に`#`を行頭に書くと、その行全体がコメントとなります。このコメントを、「ブロックコメント」と呼びます。
多くのエディタでは「`Ctrl` + `/`」のショートカットでブロックコメントが可能なので覚えておくと大変便利です。
例
```
# NumPyをnpという名前でインポート
import numpy as np
```
### 複数行コメント
シングルクォート`'`、ダブルクォート`"`を3つつなげたトリプルクォート(`'''`, `"""`)で囲むことで改行を含めたコメントを生成することができます。
この場合コメントは文字列として評価されるため、インデントは揃える必要があります。
### docstring
複数行コメントを用いて関数(defブロック)やクラスなどの先頭の文字列にその説明を記述する docstring という仕組みがあります。
ここに記述した内容は関数やクラスの`__doc__`属性に格納されます。
簡単に足し算を行う`add`関数について二種類のdocstringで例を挙げる。
例. [NumPy docstring guide](https://numpydoc.readthedocs.io/en/latest/format.html#numpydoc-docstring-guide)に沿ったもの
```
def add(x, y):
"""Returns sum of x and y
Parameters:
----------
x : int
operand1 of addition
y : int
operand2 of addition
Returns:
----------
int
sum of x and y
"""
return x + y
```
例. [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html)に沿ったもの
```
def add(x, y):
"""Returns sum of x and y
Args:
x : operand1 of addition
y : operand2 of addition
Returns:
sum of x and y
"""
return x + y
```
## コード規約
Pythonでは、ソースコードのスタイルに一貫性を持たせ読みやすいコードにするため、「[PEP8](https://www.python.org/dev/peps/pep-0008/)」と言われるコーディング規約が発行されています。

PEPとは、「Python Enhancement Proposal」の略です。Pythonにおいて、「スタイルを統一し読みやすいコードを書こう」というアイデアのもとに作られたのが、このソースコードスタイルガイドになります。
一例として、下記のような規約があります。
- 関数名や変数名:小文字のみ、単語間はアンダースコアを用いる(例:`test_func_a`)
- クラス名:先頭を大文字、パスカルケースで記載(例:`TestClass`)
- 定数名:すべて大文字で、単語間はアンダースコアを用いる(例:`TEST_CONST`)
- モジュール名:すべて小文字で、単語間はアンダースコアを用いることもできる(例:`test_module`)
- パッケージ名:すべて小文字で、アンダースコアの仕様は制限する(例:`testpackage`)
詳しくは「[PEP8 日本語訳](https://pep8-ja.readthedocs.io/ja/latest/)」を参照してください。