はじめてのPython3で基本を知るためのリンク集

- [Pythonのif __name__ == '__main__'の意味と使い方 | note.nkmk.me](https://note.nkmk.me/python-if-name-main/)



# データ型
|分類|型|例|
|:-:|:-:|:-:|
|[テキストシーケンス型](https://docs.python.org/ja/3/library/stdtypes.html#text-sequence-type-str)|str|`'文字'``"文字"``'''文字'''``"""文字"""`|
|[シーケンス型](https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range)|[list](https://docs.python.org/ja/3/library/stdtypes.html#list)|`[1]``[x for x in iterable]``list(1,2,3)`|
|[シーケンス型](https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range)|[tuple](https://docs.python.org/ja/3/library/stdtypes.html#tuple)|`a, b``(a,b)``tuple([a,b])`|

```py
# 辞書型を空で初期化
dic = {}
# リスト型を空で初期化
list = []
# 空白文字を一括削除
s = ''.join({空白文字を含む文字列}.split())

# 今日
today = datetime.today()
# 明日
tomorrow = today + timedelta(days=1)
# 来月
next_month = today + relativedelta(months=1)
```

- [Pythonで型を確認するには？type・isinstance関数について解説 | 侍エンジニア塾ブログ](https://www.sejuku.net/blog/24954)
- [空白文字を一括削除 - yohhoyの日記](https://yohhoy.hatenadiary.jp/entry/20160821/p1)
- [Pythonで翌日や翌月みたいな日付の計算をする - Qiita](https://qiita.com/dkugi/items/8c32cc481b365c277ec2)
- 存在確認したい
    - [文字列が空白・NULLか判定する  |  鎖プログラム](https://pg-chain.com/python-null)
    - [【python】0,None,numpy.nanの比較 - Qiita](https://qiita.com/karintou/items/1c2434697e1658d1d4e0)



















# ライブラリ
- [【Python】pipとwheel - Qiita](https://qiita.com/kenta1984/items/16a14f3bfaf1f257c585)
- [ウェブフレームワークであるFlask](http://ponsuke-tarou.hatenablog.com/entry/2019/01/09/234429)
- [The Official YAML Web Site](https://yaml.org/)
- [PyInstallerでexeファイル化 - Qiita](https://qiita.com/takanorimutoh/items/53bf44d6d5b37190e7d1)
- [深入りしないCython入門 - Qiita](https://qiita.com/pashango2/items/45cb85390193d97523ca)
- [Pythonでの数値計算ライブラリNumPy徹底入門 - DeepAge](https://deepage.net/features/numpy/)
- [インターネットにアクセスできるモジュール「Requests」をインストール](http://ponsuke-tarou.hatenablog.com/entry/2018/11/28/011543?_ga=2.22888185.393079703.1546642295-986868526.1487934926)

## MkDocs
- [はじめてのMkDocsの使い方 - Qiita](https://qiita.com/ponsuke0531/items/179b4b412e5df379523b)
- テーマ
    - いろんなテーマの見た目が見られる > [MkDocs Themes · mkdocs/mkdocs Wiki · GitHub](https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes)
    - [Getting started - Material for MkDocs](https://squidfunk.github.io/mkdocs-material/getting-started/)
- 表を作成するのに便利なWebツール
    - [Markdown表変換ツール - MarkDown Convert](https://markdown-convert.com/ja/tool/table)
    - [ツール｜Excelの変換（HTML・Markdown） | 矢野ヒロタ](https://yanohirota.com/excel-to-html-converter/)
- 困った
    - [Config value: 'pages'. Warning: The 'pages' configuration option has been deprecated and will be removed in a future release of MkDocs. Use 'nav' instead. - Qiita](https://qiita.com/ponsuke0531/items/6305341f03693952213a)
    - [MkDocs encountered as error parsing the configuration file: - Qiita](https://qiita.com/ponsuke0531/items/7dd4f81e061722d82af8)
    - [Warning: Unrecognised configuration name - Qiita](https://qiita.com/ponsuke0531/items/1eef66f063e2cd6663b4)


## pandas
- [Installation &#8212; pandas 1.1.3 documentation](https://pandas.pydata.org/docs/getting_started/install.html)
- [API reference &#8212; pandas 1.1.3 documentation](https://pandas.pydata.org/pandas-docs/stable/reference/index.html)
- query()で指定するengineについて -> [pandas.eval &#8212; pandas 1.1.3 documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.eval.html#pandas.eval)
- [xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; - Qiita](https://qiita.com/ponsuke0531/items/906f029e74f829a9618a)
- [UnicodeDecodeError: 'shift_jis' codec can't decode byte - Qiita](https://qiita.com/ponsuke0531/items/1dcfad48db1e33c16085)
- [ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd. - Qiita](https://qiita.com/ponsuke0531/items/2c63e819a33aad13a9ae)
- [Unalignable boolean Series provided as indexer - Qiita](https://qiita.com/ponsuke0531/items/680a6fde1435f189d31f)
- [欠損値nanじゃないデータを抽出する方法 - Qiita](https://qiita.com/ponsuke0531/items/7df79686a660e6b025cb)
- [pandasのread_excelでExcelファイルを読み込んだ後の型 - Qiita](https://qiita.com/ponsuke0531/items/be8dce9107620492ac60)
- [pandas.read_excelで読み込んだExcelの日付がシリアル値だったのでdatetime.datetimeに変換した - Qiita](https://qiita.com/ponsuke0531/items/4ddbc6438a817790dfa3)
- [pandas.DataFrameの任意の列がユニークの行をいろいろやってみる - Qiita](https://qiita.com/ponsuke0531/items/fa64ad91fad659cff3b1)
- [pandas.read_excelで読み込んだ24時以降の時間は隣接するセルによってデータ型が変わる？ - Qiita](https://qiita.com/ponsuke0531/items/f91434566c4aa4a9684b)
- [The truth value of a Series is ambiguous. - Qiita](https://qiita.com/ponsuke0531/items/236088a8237d5f7485ab)


# 仮想環境を作りたい
```bash
# venvで仮想環境を作る
$ python3 -m venv {仮想環境名}

# 仮想環境の有効化(Linux/Mac)
$ source {仮想環境名}/bin/activate
# 仮想環境の有効化(Windows)
$ source {仮想環境名}/Scripts/activate

# 仮想環境を抜ける
(仮想環境名) $ deactivate
```

- [仮想環境を構成する - ヘルプ | PyCharm](https://pleiades.io/help/pycharm/creating-virtual-environment.html)
- [venv: Python 仮想環境管理 - Qiita](https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e)





# 演算子
### 比較演算子
|Javaとか|Python|
|:-:|:-:|
|x && y|x and y|
|x &#124;&#124; y|x or y|
|!x|not x|

### 算術演算子

|意味|書き方|
|:-:|:-:|
|掛け算|a * b|
|割り算|a / b|
|割り算の余り|a % b|
|乗算|a ** b|
|切捨て割り算|a // b|

















# コーディング規約
- [PEP8 日本語](https://pep8-ja.readthedocs.io/ja/latest/)
- [pycodestyle(pep8) エラーコードチートシート - Qiita](https://qiita.com/KuruwiC/items/8e12704e338e532eb34a)
- ドキュメンテーション文字列(Docstring)
    - [PEP257 英語](https://www.python.org/dev/peps/pep-0257/)
    - [PEP257 日本語](https://github.com/whosaysni/pep-ja/blob/master/pep-0257.rst)
- [Python命名規則一覧 - Qiita](https://qiita.com/naomi7325/items/4eb1d2a40277361e898b)











# コメントを書きたい
```python
# 1行のコメント
'''
複数行コメント
'''
```

## docstring
JsDoc, JavaDoc, PHPDoc的なもので、書き方はNumPy(数値計算を効率的に行うための拡張モジュール)とGoogleスタイルがあるらしい。

```python
def function_name():
    """ドキュメンテーション文字列
    文字列が 1 行内に収まっていても、三連二重引用符を使います。 
    前にも後ろにも空行を入れてはなりません。
    文章は、ピリオドで終えます。
    """
```

- [可読性を上げるための、docstringの書き方を学ぶ（NumPyスタイル）](https://qiita.com/simonritchie/items/49e0813508cad4876b5a)
- [Example Google Style Python Docstrings &mdash; napoleon 0.7 documentation](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)

# 公式サイト・ドキュメント

- [公式サイト - python.org](https://www.python.org/)
- [公式ドキュメント（日本語） - python.org](https://docs.python.org/ja/3/)
- [strftime() と strptime() の書式コード|datetime --- 基本的な日付型および時間型 &#8212; Python 3.8.6 ドキュメント](https://docs.python.org/ja/3/library/datetime.html#strftime-and-strptime-format-codes)

# IDE
- [Sunblime Textを使う - Qiita](https://qiita.com/ponsuke0531/items/dbdf8d78403c1f73d536)
- [Visual Studio Codeを使う - Qiita](https://qiita.com/ponsuke0531/items/0d696eae286d1206baf9)
- Cloud9 : [AWSがはじめてすぎてさっぱり分からない時に見るリンク集 - Qiita](https://qiita.com/ponsuke0531/items/a23995bd621bef154e3c)

## PyCharm
- [MacにPython3とPyCharmをインストールする方法 - ponsuke_tarou’s blog](http://ponsuke-tarou.hatenablog.com/entry/2018/05/13/003700)
- [WindowsにPython3とPyCharmをインストールする方法 - ponsuke_tarou’s blog](https://ponsuke-tarou.hatenablog.com/entry/2020/09/24/180503)
- [PhpStormを初めて使うときに役立てたいリンク集 - Qiita](https://qiita.com/ponsuke0531/items/f1f5287e0be3ef9911ef)
    - 同じようなところがある
- [PyCharmでデバック時にコマンドライン引数を指定する方法 - Qiita](https://qiita.com/ponsuke0531/items/9d25cb61899114eac1a3)
- [EclipseからIntelliJ IDEAに移行する人のためのショートカット比較(Windows) - Qiita](https://qiita.com/riekure/items/ade81d045cf75d9ae3e0)
- エディタを分割したい
    - エディタのタブ > コンテキストメニュー > [Split Vertically] or [Split Horizontally]

|やりたいこと|Eclipse|PyCharm|
|:-:|:-:|:-:|
|名前変更(リファクタ)|Shft + Alt + R|Ctrl + F6|
|行の削除|Ctrl + D|Ctrl + Y|
|大文字小文字切替|-|Ctrl + Shift + U|
|ステップイン|F5|F7|
|ステップオーバー|F6|F8|
|プログラム再開|F8|F9|
|式の評価|-|Alt + F8|
|式のクイック評価|-|Ctrl + Alt + F8<br>[Windows10でCtrl+Alt+F8を<br>押下してディスプレイが<br>表示されなくなった](https://qiita.com/ponsuke0531/items/9978fce91a18d6459b77)|




# with Backlog
- [Backlogの課題にGitHubのコミットを連携する方法 - ponsuke_tarou’s blog](https://ponsuke-tarou.hatenablog.com/entry/2020/12/07/104755)


# with AWS Lambda
- [タグのついているインスタンスの情報を辞書形式で取得する方法 - Qiita](https://qiita.com/ponsuke0531/items/1eaac9690cd7c34edb04)
- [RDSを自動停止する - ponsuke_tarou’s blog](http://ponsuke-tarou.hatenablog.com/entry/2019/12/06/091917)
- [EC2を自動停止する - ponsuke_tarou’s blog](https://ponsuke-tarou.hatenablog.com/entry/2020/03/30/000120)
- [EC2インスタンスを祝日を除いた平日に自動起動する - ponsuke_tarou’s blog](http://ponsuke-tarou.hatenablog.com/entry/2020/02/18/100804)
- [EBSボリュームにタグをつける - ponsuke_tarou’s blog](http://ponsuke-tarou.hatenablog.com/entry/2020/02/04/094827)




# with Slack
- [はじめてのPythonでSlackとつながってみる](http://ponsuke-tarou.hatenablog.com/entry/2019/01/05/171355)
- チュートリアルをやってみる
    - [Slack-Python-Onboarding-Tutorial の準備](http://ponsuke-tarou.hatenablog.com/entry/2019/01/06/232659)






# 困った
- [TypeError: must be str, not {型}](https://qiita.com/ponsuke0531/items/c5ad5d4f643211ca6582)
- [pip3コマンドを使ったらYou are using pip version 9.0.3, however version 18.1 is available.となった](https://qiita.com/ponsuke0531/items/82f27523ededc0f754f7)
- [TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time' - Qiita](https://qiita.com/ponsuke0531/items/742b9b61625a827d6dbf)
- [raise ValueError, "unsupported hash type" - Qiita](https://qiita.com/ponsuke0531/items/67f5ccfd93b237a4c664)
- [No module named - Qiita](https://qiita.com/ponsuke0531/items/4de6bcf581b6a5ea27ff)