私は大学院レベルの講義をしていますPythonクラスで、学生は標準ライブラリを紹介する必要があります。最も重要な標準モジュールのいくつかについて彼らと話し合いたいです。
絶対に必要なモジュールは何だと思いますか?おそらくあなたの分野(Webプログラミング、科学など)によって応答は異なりますが、math
、sys
、re
、os
、os.path
、logging
、…そして多分:collections
、struct
、…
1時間または2時間のスロットで、どのモジュールを提示することをお勧めしますか?
1〜2時間のスロットでカバーするモジュールは、視聴者の興味や焦点に完全に依存します。彼らは他にどのようなクラスを取っていますか?彼らはすぐに利用するために何を準備していますか?
必ずmath
、decimal
、datetime
、time
、re
について言及してください。
ファイル指向の作業を行うITタイプの場合:glob
、fnmatch
、os
、os.path
、tempfile
、shutil
。
データベースの人々はsqlite
とjson
について聞く必要があります。
シミュレーションの聴衆はrandom
について聞きたいかもしれません。
Web開発者は、クライアントの観点からurllib2
について聞く必要があります。また、Beautiful Soupとお好みのXMLパーサー。
Web開発者は、サーバーの観点からlogging
およびwsgiref
について聞く必要があります。
itertools
とfunctools
を提供します。これらのモジュールは、プログラミングのいたるところにある抽象化で動作するため、学習に役立つと思います。より実用的なものの中で、xmlモジュール(xml.dom
、xml.sax
)は非常に便利です。
PyMOTW (今週のPythonモジュール)をご覧ください。厳密にはstdlibではありませんが、python stdlib。の明らかでそれほど明確ではない宝石の優れたリソースです。さらに、導入されたモジュールの優れたドキュメントとしても機能します。
典型的なコンピュータータスクを実行する典型的なコンピューターユーザー/プログラマーに最も意味のあるいくつかのモジュールを選びます。そうすれば、彼らが実際にse pythonを自分の時間に使う可能性が最も高い可能性があります。
私の意見では、ほとんどの人が実行する可能性が高い操作はファイル操作です。たとえば、ディレクトリ内のすべてのファイルを調べて、それに何らかのアクションを実行します。
したがって、モジュールは次のようになります:osおよびos.pathはおそらく最も重要であり、またglob、fnmatch and shutilについても言及します。また、subprocessは、上記のコンテキストで使用される傾向があるため、非常に役立つ場合もあります。
最後に、私はoptparseを使用します。これにより、それらは非常に迅速に使用可能でプログラマーフレンドリーなプログラムになり、他の人が使用したいプログラムを実際に作成することも期待できます。
それは彼らが何をするか、そして彼らがどんなレベルかによって少し異なります。私が始めたときに誰かが私に指摘してほしいいくつかのモジュールは次のとおりです:
私は非常に実用的なモジュールを覚えています:コピー。
私はdeepcopy()を頻繁に使用しています。
1〜2時間のスロットで easy_install と PyPIリポジトリ を紹介します。標準のライブラリにない場合でも、他の多くの外部をインストールできます。モジュール、そしてそれはあなたが標準のlibで見つけることができないときに調べる最初の場所です。
それとは別に、numpy、re、doctest/unittest、そしておそらくpickleを紹介します。
リストにurllib2を追加します。
operator
、すでに述べたものの隣。
osとos.path:コアモジュールであり、プラットフォームに依存しないコードをpythonで記述する必要があるため、学生はシェルスクリプトからpythonに切り替えることができます。 osとos.pathを学習した後のスクリプト。
Datetime、weakref、pickle、StringIO、heapqがスレッド化している可能性があることを忘れないでください。
Numpyについても言及する価値がありますが、標準ライブラリからのものではありません。
sys
を除いて、ここの誰もが重要なものをすべて手に入れたと思います。実際のPython=コードを見ると、sys
はおそらく最も一般的に使用されているモジュールの1つです(通常、sys.version
)。
また、実際にはモジュールではありませんが、__future__
。
そして、誰もPythonを使わずにimport this
。
理系の学生にとって、めったに聞こえないが強力なモジュール「networkx」は価値があります。ただし、最初にインストールする必要があります。このモジュールは十分に文書化されています: http://networkx.lanl.gov/index.html
timeit なしでは生活するのは難しい
>>> # Python Shell usage
... import timeit
>>> tt = timeit.Timer("foo = 'time this'", "print 'setup with this arg'")
>>> tt.timeit(number=1000)
setup with this arg
0.00021100044250488281
>>>
[mpenning@Bucksnort ~]$ # Bash Shell usage
[mpenning@Bucksnort ~]$ # 5 runs with 1000 samples each.
[mpenning@Bucksnort ~]$ python -m timeit -n 1000 -r 5 -s "print 'setup w/ this arg'" \
"foo = 'time this'"
setup w/ this arg
setup w/ this arg
setup w/ this arg
setup w/ this arg
setup w/ this arg
1000 loops, best of 5: 0.173 usec per loop
[mpenning@Bucksnort ~]$
あなたが言及したものとは別に、私はサブプロセスとsqlite3モジュールが特に便利だと感じました。ただし、標準ライブラリモジュール自体のリストを確認することを生徒に勧めます。また、標準ライブラリ外のモジュールから、numpy(またはnumarray)とpyparsingについて言及します。