「今日のPEP8」まとめ

Python学習
1
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩コードのレイアウト:インデント 行を継続する場合は、折り返された要素を縦に揃えるようにすべきです。括弧やブラケットおよび波括弧で囲まれた要素については、Pythonが暗黙のうちに行を結合することを利用して揃えます。

2020-07-24 20:47:04
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

()内で折り返す時は頭を揃えよう 関数定義時の仮引数(parameter)の時の揃え方、関数呼び出し時の引数(argument)の時の揃え方と。if文の条件式の時も注意。 ブラケットは[ ]のこと?

2020-07-24 20:47:14
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩インデント 行を継続して波括弧/ブラケット/括弧を閉じる時は、「リストの最後の要素が置かれた行の、はじめのホワイトスペースでない文字の直下」に閉じる記号を置いても構いません。 もしくは、閉じる記号を「継続された行のはじめの文字」に合わせて置いても構いません。

2020-07-25 12:52:45
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

閉じ括弧の置き方。インデントを入れて要素に揃えるパターン、インデントなしで頭に揃えるパターンどちらもあり(だがコードの中で統一はした方が良いかもですね) pic.twitter.com/rfg64TbxHT

2020-07-25 12:59:54
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩インデント 1レベルインデントするごとに、スペースを4つ使いましょう。 🚩タブか、スペースか? スペースが好ましいインデントの方法です。 タブを使うのは、既にタブでインデントされているコードと一貫性を保つだけです。

2020-07-26 20:47:53
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

タブとスペースの混在はNG。 なぜスペースが良いかは特に書かれていませんが、調べると論争があるようですね。それぞれメリットデメリットありますが、スペースだと環境に依存しない、というのが大きいのかなと思いました。

2020-07-26 20:54:54
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩1行の長さ すべての行の長さを、最大79文字までに制限しましょう。 (docstringやコメントのように)構造に関する制約が少ないテキストのブロックについては、1行72文字までに制限すべきです。

2020-07-27 22:00:42
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

文字数の制限をつけるのは、コードを見やすくするため。多くのエディタのデフォルト設定で勝手に改行されないようにこの文字数が推奨されているようです。 チームによってはこの限りではありません。 カッコの中では行を分けても自動で連結されるので、それをうまく利用するのがコツ。

2020-07-27 22:01:28
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

カッコを使わない場合は、Macなら\マーク(Windowsなら¥マーク)でコードを改行します。 ちなみにdostring(ドキュメント文字列、ドキュメンテーション文字列とも)は関数やクラスの説明書きに記述するコメントのこと。三重引用符(""")で囲われるやつです。 (なぜこれは72文字なんだろう…?)

2020-07-27 22:04:13
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩2項演算子の前で改行すべきか、後で改行すべきか? 数十年の間、2項演算子の後で改行するスタイルが推奨されていました。しかし、このやり方は読みにくくなってしまいます。 この問題を解決するため、(前略)構造化された式は常に2項演算子の前で改行します。 pic.twitter.com/DNewmtxTf9

2020-07-28 21:45:46
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

「2項演算子」は四則演算などの算術演算子のこと、「関係演算子」は等号や不等号の比較演算子のこと。 先ほどの一文は前文を端折ってしまいましたが、数学関係の論文や出版における規約のようです。

2020-07-28 21:46:36
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩ソースファイルのエンコーディング Pythonのコアディストリビューションに含まれるコードは常にUTF-8(Python2ではASCII)を使用すべきです。 ASCII(Python2)やUTF-8(Python3)を使用しているファイルにはエンコーディング宣言を入れるべきではありません。

2020-07-30 20:52:39
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

エンコーディング宣言はあまり馴染みがないですが、Python2の本を開いた際に見かけた覚えがあります。 Python3ならUTF-8という文字コードがデフォルトで、これを使う場合はソースコードに宣言を書かないのが良い。 コチラが超詳しくて参照にさせていただきました。 qiita.com/KEINOS/items/6… pic.twitter.com/4If7Ot1Mhf

2020-07-30 21:01:07
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩import import文は、通常は行を分けるべきです。 import文は常にファイルの先頭、つまりモジュールコメントやdocstringの直後、そしてモジュールのグローバル変数や定数定義の前に置くようにします。 pic.twitter.com/w48iqFJL0K

2020-07-31 19:24:24
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

モジュールをまとめて1つのimport文で書くと行数が減って良さそうに思っていましたが、基本は分けるのが推奨されています。 ただ同じモジュールから複数のクラスをインポートする場合はまとめてimport文を書くのがシンプルです。 PEP8ではさらにimport文の順番について言及しています(明日に続く)

2020-07-31 19:31:48
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩import import文は、次の順番でグループ化すべきです: 1.標準ライブラリ 2.サードパーティに関連するもの 3.ローカルなアプリケーション/ライブラリに固有のもの 上のグループそれぞれの間には、1行空白を置くべきです。

2020-08-01 20:15:10
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

昨日のimportの項目の続き。サンプル画像には自分が以前作ったスクレイピングコードを修正して載せました。 標準ライブラリとしては、よく使うdatetimeやcalendar, osなど色々ありますね。それ以外のインストールして使用するライブラリがサードパーティに当たります。 参考:code-graffiti.com/standard-libra… pic.twitter.com/a5Pr0ZyzPr

2020-08-01 20:20:02
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩import ・絶対importを推奨します。 ・明示的に相対importを使うことが許される場合があります。 ・ワイルドカードを使ったimportは避けるべきです。 pic.twitter.com/q2rCIEBRxS

2020-08-03 01:19:46
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

importの書き方は色々あり奥が深いです。 ワイルドカードを使うとモジュール内の全オブジェクトがインポートされるので便利に思いきや、どの名前が名前空間に存在しているのか(コード内で呼び出す変数や関数がどのモジュールに属しているか)が分からず可読性が下がるので基本使うべきではないとのこと

2020-08-03 01:22:35
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩モジュールレベルの二重アンダースコア変数名 モジュールレベルの"二重アンダースコア変数"(変数名の前後にアンダースコアが2つ付いている変数)は、あらゆるimport文の前に置くべきです。Pythonではfuture importを、docstring以外のあらゆるコードの前に置くように強制します pic.twitter.com/Anuc2zlrDh

2020-08-03 18:50:05
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

正直この__hoge__の意味と役割は良くわかりませんでした…。 "二重アンダースコア変数"は英語では"dunders"(double underscoreからきている)と呼ぶようです。 __future__モジュールはインポートすることで現在のバージョンにない今後実装予定の機能を使うことができる、というものでしょうか。

2020-08-03 18:55:13
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩文字列に含まれる引用符 Pythonでは、単一引用符(')で囲まれた文字列と、二重引用符(")で囲まれた文字列は同じです。 単一引用符や二重引用符が文字列に含まれていた場合は、文字列中でバックスラッシュを使うことを避けるため、もう一方の引用符を使うようにしましょう。

2020-08-04 17:33:13
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

引用符の役割が同じだとしても、どちらの引用符を優先して使うかはそのコード内・チーム内でルールを決めて統一しておいた方が良いですね。 「バックスラッシュを使う」(Windowsは¥マーク)というのはエスケープシーケンスのことで、それを使わない方が文字列がシンプルになり可読性が上がるためです。 pic.twitter.com/V1B0rilAX9

2020-08-04 23:13:03
拡大
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

#今日のPEP8 🚩文字列に含まれる引用符 三重引用符で文字列を囲む時は、常に二重引用符(""")を使うようにします。

2020-08-05 12:25:48
おおさき🥔小さなIT活用で快適な農場づくりを @massa_potato

単一引用符(')と二重引用符(")はPythonでは区別しない、とのことでしたが、 docstroing(モジュールや関数、クラスの動作についての説明書き)で引用符を3つ使う場合は、常に二重引用符を使うようにします。 (PEP257でのdocstringに関するルールと一貫させるため)

2020-08-05 12:28:58