Python での効率的なプログラミング手法の紹介

巴扎黑
リリース: 2017-04-05 13:36:52
オリジナル
1279 人が閲覧しました

私は長年 Python でプログラミングしてきましたが、今でも、この言語がコードを非常にきれいに表示できることと、DRY プログラミングの原則がどのように適切に適用されているかに驚いています。長年にわたり、私は主に Django、Flask、Requests などの人気のオープンソース ソフトウェアについて読むことで多くのヒントや知識を学びました。

以下で私が選択したテクニックは人々に見落とされがちですが、日常のプログラミングに非常に役立ちます。

1. 辞書内包表記と集合内包表記

ほとんどの Python プログラマーはリスト内包表記を知っており、使用したことがあります。リスト内包表記の概念に慣れていない場合は、リスト内包表記を使用すると、リストを作成するためのより短く、より簡潔な方法が得られます。

りー

Python 3.1 (および Python 2.7) 以降、同じ構文を使用してセットと辞書を作成できます:

>>> some_list = [1, 2, 3, 4, 5]

>>> another_list = [ x + 1 for x in some_list ]

>>> another_list
[2, 3, 4, 5, 6]
ログイン後にコピー

最初の例では、some_list に基づいて一意の要素を含むセットを作成します。このセットには偶数のみが含まれます。ディクショナリ テーブルの例では、1 ~ 10 の非繰り返し整数のキーを作成し、値はキーが偶数かどうかを示すブール型です。

ここでもう 1 つ注目すべき点は、セットのリテラル表現です。次のメソッドを使用してコレクションを簡単に作成できます:

>>> # Set Comprehensions
>>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]

>>> even_set = { x for x in some_list if x % 2 == 0 }

>>> even_set
set([8, 2, 4])

>>> # Dict Comprehensions

>>> d = { x: x % 2 == 0 for x in range(1, 11) }

>>> d
{1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}
ログイン後にコピー

組み込み関数 set() を使用する必要はありません。

2. カウントする場合は、Counter counting オブジェクトを使用します。

これは当たり前のように聞こえますが、忘れられがちです。何かを数えるのはほとんどのプログラマーにとって一般的なタスクであり、ほとんどの場合、それほど難しいことではありません。これを簡単にする方法をいくつか紹介します。

Python のコレクション ライブラリには、この種のことを行うために特別に設計された dict クラスの組み込みサブクラスがあります:

>>> my_set = {1, 2, 1, 2, 3, 4}

>>> my_set
set([1, 2, 3, 4])
ログイン後にコピー

3. JSON を美しく印刷します

JSON はデータのシリアル化の非常に優れた形式であり、現在さまざまな API や Web サービスで広く使用されています。 Python の組み込み json 処理を使用すると、JSON 文字列をある程度読みやすくすることができますが、大きなデータに遭遇すると、長い連続線として表示され、人間の目には見えにくくなります。

JSON データをより使いやすくするために、indent パラメーターを使用して美しい JSON を出力できます。これは、コンソールで対話的にプログラミングしたり、ログを記録したりする場合に特に便利です:

>>> from collections import Counter
>>> c = Counter('hello world')

>>> c
Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})

>>> c.most_common(2)
[('l', 3), ('o', 2)]
ログイン後にコピー

同様に、組み込みの pprint モジュールを使用すると、他のものをより美しく印刷することもできます。

4. 1 回限りの高速な小規模 Web サービスを作成します

場合によっては、2 つのマシンまたはサービスの間で、単純で非常に基本的な RPC のような対話を行う必要があります。プログラム B を使用して、プログラム A のメソッドを簡単な方法で (場合によっては別のマシン上で) 呼び出す必要があります。内部でのみ使用。

ここで説明する方法を社内以外の 1 回限りのプログラミングに使用することはお勧めしません。このようなことを行うには、XML-RPC と呼ばれるプロトコル (この Python ライブラリに対応) を使用できます。

以下は、SimpleXMLRPCServer モジュールを使用して、高速な小さいファイル読み取りサーバーを構築する例です:

>>> import json

>>> print(json.dumps(data))  # No indention
{"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]}

>>> print(json.dumps(data, indent=2))  # With indention

{
  "status": "OK",
  "count": 2,
  "results": [

    {
      "age": 27,
      "name": "Oz",

      "lactose_intolerant": true
    },
    {
      "age": 29,

      "name": "Joe",
      "lactose_intolerant": false
    }
  ]

}
ログイン後にコピー

クライアント:

rree

このようにして、外部依存関係がなく、わずか数行のコードを備えたリモート ファイル読み取りツールが得られます (もちろん、セキュリティ対策はないため、これは自宅でのみ実行できます)。

5. Python の素晴らしいオープンソース コミュニティ

ここで説明したいくつかのことはすべて Python 標準ライブラリに含まれており、Python がインストールされている場合は、すでにこの方法で使用できます。他の多くの種類のタスクについては、コミュニティによって管理されている使用できるサードパーティ ライブラリが多数あります。

次のリストは、便利で堅牢なオープンソース ライブラリに必要だと私が考えるものです。

優れたオープンソース ライブラリには...
  • ユースケースに適用される明確な許可ステートメントを含めます。


  • 開発とメンテナンス作業は非常に活発です (または、開発とメンテナンスに参加することもできます)


  • pip を使用して簡単にインストールまたは繰り返し展開できます。


  • 適切なテスト範囲を備えたテスト スイートを用意します。

要件を満たす優れたライブラリを見つけたら、恥ずかしがることはありません。ほとんどのオープン ソース プロジェクトは、Python のマスターでなくても、コードの寄付や支援を歓迎します。

元のリンク: Python の生産性の向上

以上がPython での効率的なプログラミング手法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート