グループ化にインデントを使う 参照 Python ドキュメントドキュメントでは、多くのコーディングスタイルは begin/end の括弧にそれぞれ一行を使っている事に対して以下のように述べています。 1) 冗長(無駄が多い)になって画面を浪費する。 2) プログラムの見通しが悪くなる。 一つの関数は一画面に収めるのが理想で、20 行の Python は 20 行の C よりもはるかに多くの作業ができると断言しています。▼ 確かに行数は 4 : 2 です。if (x <= y) { x++; } if x <= y: x += 1実際問題、結局インデントするんだからそれでブロックを決定してしまうのはとても合理的に感じます。問題がある場合は唯一、勉強し始めの初期のプログラマがインデントをうまくできないという事ぐらいでしょう。 式中で代入ができない 参照 Python ドキュメント要するにプログラマがとても良くやる、条件の中で == と書くところを、= と書いてしまってバグが発生させるのを避けるという趣旨でした。▼ 今じゃ、こっちのほうが主流になってますが...while (line = readline(f)) { 処理 }自分は昔々 while(1) {} って書いてました。必ず if で脱出条件書くので、後からソースコードが解りやすいです。で、Python ではそれを勧めているようです。while True: line = f.readline() if not line: break 処理さらに、嫌み(あるいはジョーク)たっぷりに以下のようにも言っています。熟練した Python プログラマは while True イディオムを受け入れていて、式構造中の代入がなくてもそれほど苦労しないようです。Python にそれを強く求めるのは新人だけです。
結局一番良いのは、イテレータを使用して for 文を使えとの事でした。(確かに... イマドキもう for 系で統一すべきだとは前から思ってました)for line in f: 処理switch や case 文がない 参照 Python ドキュメント 正直自分は switch や case 文が嫌いです。自分では無く、自分以外の人がそれでミスして迷惑をこうむるからです。Python 的には、一画面に収めるのが理想 とか言ってるし、無いのは納得できます。 でも、先を見据えて議論はされているようです。 ラムダ式は文を含むことができない 参照 Python ドキュメント おそらく、ブロックをインデントで表現するという記法上、一般的なブロックを引数として渡すのは無理という事だと思います。しかし、Python はこの事についてとても強気に以下のように述べています。Python のラムダは単なる、関数を定義するのが面倒すぎる場合のための簡略な記法に過ぎないのです。従って、ローカルで定義された関数ではなくラムダを使う利点は、関数の名前を考える必要が無いことだけです
だそうです。 タプルとリストという別のデータ型が用意されている 参照 Python ドキュメント 一般的な解釈では、タプルは変更不可(イミュータブル)で、リストは変更可(ミュータブル)です。ですが、追加の理解として以下のような記述がありました。タプルは、Pascal のレコードや C の構造体と同様なものと考えられます。 型が異なっても良い関連するデータの小さな集合です。 グループとして演算されます。(一つの型として扱う?) リストは他の言語の配列に近いものです。 全て同じ型の可変数のオブジェクトを持ちます。 それらが一つ一つ演算される傾向にあります。 イミュータブルな要素だけが辞書のキーとして使えるのでタプルだけがキーとして使えます。list.sort() はソートされたリストを返さない 参照 Python ドキュメント これは一連のデザインの流れにある『合理性』に基づいています。ソートするためだけにリストのコピーを作るのは無駄が多いそうです。そしてこの仕様上では、うっかり上書きしてしまうようなことがなくなると言っています。 新しいリストを返したいなら、代わりに組み込みの sorted() 関数を使って下さいとの事です。for key in sorted(mydict): mydict[key] で処理raw 文字列 (r-strings) はバックスラッシュで終わってはいけない 参照 Python ドキュメント 長々と書いてありましたが、要するに最後の \" が一つの文字として認識されるので、文字列が終わって無い事になるそうです。よって、最後にバックスラッシュを追加する為に以下のような事になります。dir = r"\this\is\my\dos\dir" "\\"リストやタプルの最後にカンマがあっても良い 参照 Python ドキュメント これ凄いですね。ありがとうと言う他無いですが、これも無駄を回避するデザインであると断言できます。プログラマが皆疑問に思わず受け入れていた『無駄』です。
タグ:Python
|
【Pythonの最新記事】
- Python : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- Python : shift_jis の3列の csv フォーマットのデータを ttk.Treeview に表示する
- Python : ttk.Treeview で表形式を使用して環境変数の一覧表示
- XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 1 )
- XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 4 ) : リダイレクトと関数とログ出力
- XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 3 ) : cgi.FieldStorage() から ディクショナリ
- XAMPP + Python( 3.8 ) でWEBアプリの基礎部分構築 : その ( 2 ) : QUERY_STRING と 画面定義
- Python + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- MySQL Connector/Python の使用方法概要のまとめ
- Python ドキュメントに沿った、テキストファイル読み込みの理解
- Python3 でメール送信 ( さくらインターネット )
- Python 3.6 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみました
- Eclipse + Python(Pydev) : pywin32(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新
- Eclipse + Python(Pydev) : MySQL Connector/Python でループ処理をしながら更新
- Pleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする
- Python 3.4 : インストールと最初にする事( Windows )
- Python3.x : URL を読み出す( bytes から string )
- Python3.1 : URLを読み出して、バイナリのままファイル出力する
- Python3.1 : クッキーを保持して二つの URL にアクセスする
- Python3.1 : URLを読み出してファイルに出力