Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ひのきのぼうだけで全クリ目指す

1,868 views

Published on

主にPythonの標準ライブラリライブラリを紹介します。

  • Be the first to comment

ひのきのぼうだけで全クリ目指す

  1. 1. ひのきのぼうだけで 全クリを目指す kyoto.py Python勉強会 in 高槻@a rom a_bl ack (t ty170)
  2. 2. お前誰よ?名前 : aroma_black 最近tty170とかも使ってる所属 : 某SIerのSE兼PG 主に技術的課題解決要員Pythonはシェルスクリプト覚えるのが嫌で使い始めました
  3. 3. お断り今日はPython2.7のはなしですPython3.x? なにそれおいしいの?
  4. 4. 装備品の紹介ひのきのぼう標準ライブラリhttp://www.python.jp/doc/release/library/
  5. 5. Pythonの標準ライブラリbatteries included(電池付属)という哲学で作られたhttp://www.python.org/dev/peps/pep-0206/すぐに使える強力(?)かつ多彩なライブラリ
  6. 6. Stage 1敵全体攻撃コレクションクラスを操作してみるプログラミングの基本
  7. 7. itertools いっぱいあるのでドキュメントを参照 イテレータやジェネレータを返すので リスト内包表記を組み合わせて使うと 少ない行数で書ける>>> from itertools import ifilter>>> foobar = [1, 2, foo, 4, bar]>>> [e for e in ifilter(lambda x: x.isdigit(), foobar)][1, 2, 4]
  8. 8. Stage 2仲間を増やすシェルスクリプト的なものを作ってみる(その時にあると便利なもの)引数の解析って面倒臭いよね
  9. 9. argparse コマンドラインオプションの解析器 optperseの後継import argparseparser = argparse.ArgumentParser(description=Process some integers.)parser.add_argument(integers, metavar=N, type=int, nargs=+, help=an integer for the accumulator)parser.add_argument(--sum, dest=accumulate, action=store_const, const=sum, default=max, help=sum the integers (default: find the max))args = parser.parse_args()print args.accumulate(args.integers)
  10. 10. argparse実行結果 $ prog.py -h usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
  11. 11. Stage 3てきをあやつるPythonからファイル操作を簡単に行う
  12. 12. shutilいっぱいあるのでドキュメント参照ファイル操作はos, os.pathモジュールもよく使います import os, shutil for root, dirs, files in os.walk(‘.’): for filename in files: if filename.endswith(‘.py’): pyfile = os.path.join(root, filename) shutil.copyfile(pyfile, “./pyfiles”)
  13. 13. Stage 4強敵エクセルのおともだち、CSVCSVファイルの読み書き仕事でよく使うよね?
  14. 14. csvパッケージ読み込み import csv with open(some.csv, rb) as f: reader = csv.reader(f) for row in reader: print row書き込み import csv with open(some.csv, wb) as f: writer = csv.writer(f) writer.writerows(someiterable)すこし弄ればTSVとかも読めます
  15. 15. Stage 5酒場で情報収集Webスクレイピング
  16. 16. urllib2 HTMLソースを取得するコードを3行で頼む>>> import urllib2>>> f = urllib2.urlopen(http://www.python.org/)>>> print f.read(100)<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><?xml-stylesheet href="./css/ht2html
  17. 17. Stage 6試練の時xUnit系のパッケージ付属ドキュメントにテスト可能なコードも書ける簡易的なdoctestというモジュールもある
  18. 18. unittestxUnit系のテスティングモジュール import random import unittest class TestSequenceFunctions(unittest.TestCase): def setUp(self): self.seq = range(10) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) if __name__ == __main__: unittest.main()
  19. 19. unittestさっきのテストの実行結果 . ------------------------------------------------------- --------------- Ran 1 tests in 0.000s OK
  20. 20. doctest対話シェルのコードを貼付けるだけdocstringにも埋め込める def add(n, m): """Return n + m. >>> add(1, 2) 3 """ return n + m if __name__ == "__main__": import doctest doctest.testmod()
  21. 21. doctest異常が無ければ何も表示されない異常があったときはエラーが表示される *************************************************** File "add.py", line 6, in __main__.add Failed example: add(1, 2) Expected: 4 Got: 3 *************************************************** 1 items had failures: 1 of 1 in __main__.add ***Test Failed*** 1 failures.
  22. 22. Stage Exエイリアンと戦う関数言語的な機能を使ってみる関数型言語使ってみたいけど敷居高そう...
  23. 23. functools関数の部分適用 >>> from functools import partial >>> basetwo = partial(int, base=2) >>> basetwo.__doc__ = Convert base 2 string to an int. >>> basetwo(10010) 18応用すればカリー化とかもできる...はず
  24. 24. クリアできないとき....そんな時は先人達の知恵をかりましょう。
  25. 25. つよくてニューゲーム標準ライブラリだけでクリアすると言ったなあれは嘘だPyPIと呼ばれるパッケージ管理サイトhttp://pypi.python.org/pypiRubyのRubyGems, PerlのCPANに相当
  26. 26. パッケージ管理ツールpipパッケージを自動でインストールしてくれる優れものeasy_install は衰退しましたPython3対応
  27. 27. installing pip前準備としてdistributeをインストールhttp://python-distribute.org/distribute_setup.pypipをダウンロードhttp://pypi.python.org/pypi/pip/展開してディレクトリの中で$python setup.py install
  28. 28. pipの基本的な使い方パッケージのインストール pip install package_nameパッケージのアンインストール pip uninstall package_nameパッケージの検索 pip search package_namehttp://www.pip-installer.org/en/latest/index.html
  29. 29. virtualenv仮想的な実行環境を作る為のツールアプリケーション間で依存するパッケージののバージョンの分離とか
  30. 30. virtualenvの基本的な使い方PyPIにドキュメントがあるのでどうぞ!http://pypi.python.org/pypi/virtualenv
  31. 31. virtualenv wrappervirtualenvをシェルで使いやすくする為のツールhttp://pypi.python.org/pypi/virtualenvwrapper/Windowsな人はvirtualenv-winhttps://github.com/davidmarble/virtualenvwrapper-win/
  32. 32. virtualenv wrapperの(ryさっきのPyPIのサイトをどうぞ!
  33. 33. それでも倒せないレベルを上げて物理で殴ればいいたまには人に聞くなどもしてみては?
  34. 34. まとめPythonの標準ライブラリは強力 きんのひのきのぼう今日紹介したPython標準ライブラリは一部です スイスの十得ナイフと言われているらしい ドキュメント眺めると新たな発見がある かも?
  35. 35. ご清聴ありがとうございました

×