ホームページ  >  記事  >  バックエンド開発  >  Python の効率的なプログラミング スキル

Python の効率的なプログラミング スキル

WBOY
WBOYオリジナル
2016-06-16 08:46:551247ブラウズ

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

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

>>> some_list = [1, 2, 3, 4, 5]
>>> another_list = [ some_list の x + 1]
> >> another_list
[2, 3, 4, 5, 6]

Python 3.1 (Python 2.7 でも) 以降、同じ構文を使用してセットと辞書リストを作成できます。 >

コードをコピー コードは次のとおりです:
>>> # 内包表記の設定
>>> ; some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]
>>>>even_set = { some_list の x の場合 x % 2 == 0 }
>>>even_set
set([8, 2, 4])
>>> # 辞書内包表記
>>> d = { x: x % range(1, 11) の x に対して 2 = = 0 }
>>> d
{1: False、2: True、3: False、4: True、5: False、6: True、7: False、8: True、9: False、10: True}

最初の例では、some_list に基づいて一意の要素を持つセットを作成し、そのセットには偶数のみが含まれています。ディクショナリ テーブルの例では、1 ~ 10 の非繰り返し整数のキーを作成し、値はキーが偶数かどうかを示すブール型です。
ここでもう 1 つ注目すべき点は、セットのリテラル表現です。次の方法で簡単にコレクションを作成できます。

コードをコピーします コードは次のとおりです。
>> > my_set = {1, 2, 1, 2, 3, 4}
>>>my_set
set([1, 2, 3, 4])

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


2. 数を数えるときは Counter を使用します。
これは当たり前のように聞こえますが、忘れられがちです。何かを数えるのはほとんどのプログラマーにとって一般的なタスクであり、ほとんどの場合、それほど難しいことではありません。これを簡単にする方法をいくつか紹介します。
Python のコレクション ライブラリには、dict クラスの組み込みサブクラスがあり、この種のことを行うように特別に設計されています。

コードをコピー コードは次のとおりです:
>>> 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)]


3 . JSON を美しく出力する JSON はデータのシリアル化の非常に優れた形式であり、現在さまざまな API や Web サービスで広く使用されています。 Python の組み込み json 処理を使用すると、JSON 文字列をある程度読みやすくすることができますが、大きなデータに遭遇すると、長く連続した線として表示され、人間の目には見えにくくなります。
JSON データをより使いやすくするために、indent パラメーターを使用して美しい JSON を出力できます。これは、コンソールで対話的にプログラミングまたはログを記録する場合に特に便利です。

コードをコピーします コードは次のとおりです:
> ; >> import json
>>> print(json.dumps(data)) # インデントなし
{"status": "OK", "count": 2, "results": [ {"年齢": 27, "名前": "オズ", "乳糖不耐症": true}, {"年齢": 29, "名前": "ジョー", "乳糖不耐症": false}]}
> ; >> print(json.dumps(data, indent=2)) # インデントあり
{
"status": "OK",
"count": 2,
" " : [
{
"年齢": 27,
"名前": "オズ",
"乳糖不耐症": true
},
{
"年齢" : 29,
"name": "Joe",
"lactose_intolerant": false
}
]
}

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


4. 1 回限りの高速な小規模 Web サービスを作成する
場合によっては、2 つのマシンまたはサービス間で単純で非常に基本的な RPC を実行する必要があります。プログラム B を使用して、プログラム A のメソッドを簡単な方法で (場合によっては別のマシン上で) 呼び出す必要があります。内部使用のみ。
ここで説明したメソッドを社内以外の 1 回限りのプログラミングに使用することはお勧めしません。このようなことを行うには、XML-RPC と呼ばれるプロトコル (この Python ライブラリに対応) を使用できます。
以下は、SimpleXMLRPCServer モジュールを使用して、高速で小さなファイル読み取りサーバーを構築する例です:

コードをコピーします コードは次のとおりです:

from SimpleXMLRPCServer import SimpleXMLRPCServer

def file_reader(file_name):
with open(file_name, 'r') as f:
return f.read()

server = SimpleXMLRPCServer(('localhost', 8000))
server.register_introspection_functions()
server.register_function(file_reader)
server.serve_forever()

クライアント:
コードをコピー コードは次のとおりです。

import xmlrpclib
proxy = xmlrpclib.ServerProxy('http:/ /localhost :8000/')
proxy.file_reader('/tmp/secret.txt')


このようにして、外部依存関係のないリモート ファイル読み取りツールを取得します。ほんの数行のコードです (もちろん、セキュリティ対策は何もしていないので、自宅でのみ実行してください)。

5. Python の素晴らしいオープンソース コミュニティ
ここで述べたいくつかのことはすべて Python 標準ライブラリに含まれており、Python がインストールされている場合はすでに次のように使用できます。他の多くの種類のタスクについては、コミュニティによって管理されている使用できるサードパーティ ライブラリが多数あります。
次のリストは、便利で堅牢なオープン ソース ライブラリに必要だと私が考えるものです:

優れたオープン ソース ライブラリには次の条件が必要です...

• 次の用途に適した明確なライセンス ステートメントが含まれている必要があります。あなたのユースケース。
•開発とメンテナンスの作業が活発です (または、開発とメンテナンスに参加できます)。
• pip を使用して簡単にインストールまたはデプロイを繰り返し行うことができます。
•適切なテスト範囲を備えたテストスイートを用意します。
要件を満たす優れたライブラリを見つけたら、恥ずかしがることはありません。ほとんどのオープンソース プロジェクトは、Python のマスターでなくても、コードの寄付や支援を歓迎します。

原文: http://www.aqee.net/improving-your-python-productivity/
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。