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.
Python3のススメ   Python京都勉強会     2011-06-11                  1
お前、誰よ●    稲田 尚也 (@naoina)●    株式会社SOBAプロジェクト所属●    Python歴はたぶん9ヶ月ぐらい (bitbucket調べ)●    http://www.naniyueni.org/●    最近は音ゲ...
アジェンダ●    Pythonとは●    特徴●    2系と3系●    機能紹介               3
アジェンダ●    Pythonとは●    特徴●    2系と3系●    機能紹介               4
Pythonとは           5
Pythonとは●    動的型付けのオブジェクト指向プログラミング言語●    作者はGuido van Rossum氏●    名前の由来は「空飛ぶモンティ・パイソン」から    ●      ニシキヘビからじゃないよ!●    Googl...
アジェンダ●    Pythonとは●    特徴●    2系と3系●    機能紹介               7
特徴     8
特徴●    インタプリタ●    オフサイドルール (インデントが構文の一部)●    ダックタイピング●    batteries included                             9
特徴インタプリタ         10
特徴インタプリタhttp://ja.wikipedia.org/wiki/インタプリタ                                      11
特徴インタプリタ     % cat juicy_karaage.py     say = "No.1"     print(say)     % python juicy_karaage.py     No.1                ...
特徴オフサイドルール           13
特徴 オフサイドルールhttp://ja.wikipedia.org/wiki/オフサイドルール                                   14
特徴オフサイドルール     def f():         print("running f()")     def main():         f()     if __name__ == "__main__":         ma...
特徴ダックタイピング           16
特徴 ダックタイピングhttp://ja.wikipedia.org/wiki/ダックタイピング                                   17
特徴ダックタイピング     もしそれがアヒルのように歩き      アヒルのように鳴くのならば        それはアヒルである                      18
特徴ダックタイピング          ソースclass Duck:    def say(self):        print("quack")class Mami:    def say(self):        print("tiro...
特徴ダックタイピング          ソース                            実行結果class Duck:                    % python quack.py    def say(self): ...
マミさんはアヒルになったのだ・・・                    21
特徴batteries included                     22
特徴batteries included http://docs.python.org/py3k/library/      2系は http://docs.python.org/library/                        ...
特徴batteries included     ●         ネットワーク (http(s)、ftp、smtp、pop、socket)     ●         XMLパーサー (DOM、SAX、XPath)     ●       ...
アジェンダ●    Pythonとは●    特徴●    2系と3系●    機能紹介               25
2系と3系        26
2系と3系Python2.x            27
2系と3系Python2.x  –   最新リリースは2.7.1  –   マルチバイトを意識しないとハマる  –   現状のサードパーティ製ライブラリはほとんど2.x向け                               28
2系と3系Python2.x  –   最新リリースは2.7.1  –   マルチバイトを意識しないとハマる  –   現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x                           ...
2系と3系Python2.x  –   最新リリースは2.7.1  –   マルチバイトを意識しないとハマる  –   現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x  –   最新リリースは3.2  –   ほとんど意...
2系と3系マルチバイト文字列Python2.xまでは >>> u"這いよる" + "混沌" Traceback (most recent call last):   File "<stdin>", line 1, in <module> Uni...
2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの")                             32
2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの")   UTF-8で書けばほぼ問題は出ない!                         ...
アジェンダ●    Pythonとは●    特徴●    2系と3系●    機能紹介               34
機能紹介       35
機能紹介       36
ここが便利だよ Python3           37
ここが便利だよPython3      Python3.xにしかない        便利機能を紹介                       38
ここが便利だよPython3●    集合リテラル●    内包表記●    複数with文●    順序付き辞書                     39
ここが便利だよPython3集合リテラル                 40
ここが便利だよPython3集合リテラル>>> {1, 2, 3, 2, 1}{1, 2, 3}>>>>>> {"madoka", "ao", "mami", "anko", "hmhm", "mami"}{mami, madoka, hmhm...
ここが便利だよPython3集合リテラル>>> {1, 2, 3, 2, 1}{1, 2, 3}>>>>>> {"madoka", "ao", "mami", "anko", "hmhm", "mami"}{mami, madoka, hmhm...
ここが便利だよPython3内包表記                 43
ここが便利だよPython3内包表記>>> [i for i in range(10)][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>※Python2.xでも出来る                              ...
ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>>                                   45
ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>>            辞書も内包表記出来る!                ...
ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>>            辞書も内包表記出来る!              さら...
ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ...
ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ...
ここが便利だよPython3複数with文                 50
ここが便利だよPython3複数with文Python2.xwith open("in.txt") as infile:    with open("out.txt", "w") as outfile:        outfile.write...
ここが便利だよPython3複数with文Python2.xwith open("in.txt") as infile:    with open("out.txt", "w") as outfile:        outfile.write...
ここが便利だよPython3順序付き辞書                 53
ここが便利だよPython3順序付き辞書>>> d = {}>>> d["Linux"] = "Arch">>> d["BSD"] = "Free">>> d["Mac"] = "Lion">>> d["Windows"] = "sucks">...
ここが便利だよPython3順序付き辞書>>> d = {}                   >>> import collections>>> d["Linux"] = "Arch"      >>> d = collections.Or...
ここまでであることに気がついた方               56
Python3.xにしかない便利機能を紹介すると言ったな                   57
あれは嘘だ        58
●    集合リテラル●    内包表記●    複数with文●    順序付き辞書              59
●    集合リテラル●    内包表記●    複数with文●    順序付き辞書      実はすべてPython2.7に    バックポートされているという事実                    60
●    ただし、2.7はあくまで3.xへの移行を容易にするの    が目的                             61
●    ただし、2.7はあくまで3.xへの移行を容易にするの    が目的●    2系の最終リリース (予定)                             62
Python3.2            63
Python3.2http://docs.python.org/py3k/whatsnew/3.2.html                                                64
Python3.2●    ElementTree 1.3 (xml.etree.ElementTree)●    LRU cache decorator (functools.lru_cache)●    Command line optio...
まとめ      66
まとめ●    今から始めるならPython3●    新しい機能を使いたいならPython3●    マルチバイト周りで苦労したくないならPython3●    現実的にはPython2と3の併用                       ...
質疑応答       68
ありがとうございました              69
Upcoming SlideShare
Loading in …5
×

Python Kyoto study

3,623 views

Published on

Published in: Technology

Python Kyoto study

  1. 1. Python3のススメ Python京都勉強会 2011-06-11 1
  2. 2. お前、誰よ● 稲田 尚也 (@naoina)● 株式会社SOBAプロジェクト所属● Python歴はたぶん9ヶ月ぐらい (bitbucket調べ)● http://www.naniyueni.org/● 最近は音ゲー(REFLEC BEAT、jubeat)をやってた りします 2
  3. 3. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 3
  4. 4. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 4
  5. 5. Pythonとは 5
  6. 6. Pythonとは● 動的型付けのオブジェクト指向プログラミング言語● 作者はGuido van Rossum氏● 名前の由来は「空飛ぶモンティ・パイソン」から ● ニシキヘビからじゃないよ!● Googleの公式言語の1つ 6
  7. 7. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 7
  8. 8. 特徴 8
  9. 9. 特徴● インタプリタ● オフサイドルール (インデントが構文の一部)● ダックタイピング● batteries included 9
  10. 10. 特徴インタプリタ 10
  11. 11. 特徴インタプリタhttp://ja.wikipedia.org/wiki/インタプリタ 11
  12. 12. 特徴インタプリタ % cat juicy_karaage.py say = "No.1" print(say) % python juicy_karaage.py No.1 12
  13. 13. 特徴オフサイドルール 13
  14. 14. 特徴 オフサイドルールhttp://ja.wikipedia.org/wiki/オフサイドルール 14
  15. 15. 特徴オフサイドルール def f(): print("running f()") def main(): f() if __name__ == "__main__": main() 15
  16. 16. 特徴ダックタイピング 16
  17. 17. 特徴 ダックタイピングhttp://ja.wikipedia.org/wiki/ダックタイピング 17
  18. 18. 特徴ダックタイピング もしそれがアヒルのように歩き アヒルのように鳴くのならば それはアヒルである 18
  19. 19. 特徴ダックタイピング ソースclass Duck: def say(self): print("quack")class Mami: def say(self): print("tiro quack!")def quack(animal): animal.say()quack(Duck())quack(Mami()) 19
  20. 20. 特徴ダックタイピング ソース 実行結果class Duck: % python quack.py def say(self): quack print("quack") tiro quack!class Mami: def say(self): print("tiro quack!")def quack(animal): animal.say()quack(Duck())quack(Mami()) 20
  21. 21. マミさんはアヒルになったのだ・・・ 21
  22. 22. 特徴batteries included 22
  23. 23. 特徴batteries included http://docs.python.org/py3k/library/ 2系は http://docs.python.org/library/ 23
  24. 24. 特徴batteries included ● ネットワーク (http(s)、ftp、smtp、pop、socket) ● XMLパーサー (DOM、SAX、XPath) ● 圧縮 (gzip、bzip2、zip、tar) ● SQLite ● CSVパーサー ● ユニットテスト ● デバッガ ● AST ● email、json、thread、multiprocess、etc... 24
  25. 25. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 25
  26. 26. 2系と3系 26
  27. 27. 2系と3系Python2.x 27
  28. 28. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向け 28
  29. 29. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x 29
  30. 30. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x – 最新リリースは3.2 – ほとんど意識することなくマルチバイトを扱える – 新しい機能が使える 30
  31. 31. 2系と3系マルチバイト文字列Python2.xまでは >>> u"這いよる" + "混沌" Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: ascii codec cant decode byte 0xe3 in position 0: ordinal not in range(128) >>> # coding: utf-8 print "名状しがたいバールのようなもの" 31
  32. 32. 2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの") 32
  33. 33. 2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの") UTF-8で書けばほぼ問題は出ない! 33
  34. 34. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 34
  35. 35. 機能紹介 35
  36. 36. 機能紹介 36
  37. 37. ここが便利だよ Python3 37
  38. 38. ここが便利だよPython3 Python3.xにしかない 便利機能を紹介 38
  39. 39. ここが便利だよPython3● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 39
  40. 40. ここが便利だよPython3集合リテラル 40
  41. 41. ここが便利だよPython3集合リテラル>>> {1, 2, 3, 2, 1}{1, 2, 3}>>>>>> {"madoka", "ao", "mami", "anko", "hmhm", "mami"}{mami, madoka, hmhm, ao, anko}>>> 41
  42. 42. ここが便利だよPython3集合リテラル>>> {1, 2, 3, 2, 1}{1, 2, 3}>>>>>> {"madoka", "ao", "mami", "anko", "hmhm", "mami"}{mami, madoka, hmhm, ao, anko}>>> set([1, 2, 3, 2, 1])みたいなのと同じ! 42
  43. 43. ここが便利だよPython3内包表記 43
  44. 44. ここが便利だよPython3内包表記>>> [i for i in range(10)][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>※Python2.xでも出来る 44
  45. 45. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 45
  46. 46. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 辞書も内包表記出来る! 46
  47. 47. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 辞書も内包表記出来る! さらに・・・ 47
  48. 48. ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ミストルティンキック, 知ってる?, キックじゃない}>>> 48
  49. 49. ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ミストルティンキック, 知ってる?, キックじゃない}>>> 集合も内包表記出来る! 49
  50. 50. ここが便利だよPython3複数with文 50
  51. 51. ここが便利だよPython3複数with文Python2.xwith open("in.txt") as infile: with open("out.txt", "w") as outfile: outfile.write(infile.read()) 51
  52. 52. ここが便利だよPython3複数with文Python2.xwith open("in.txt") as infile: with open("out.txt", "w") as outfile: outfile.write(infile.read())Python3.xwith open("in.txt") as infile, open("out.txt", "w") as outfile: outfile.write(infile.read()) 52
  53. 53. ここが便利だよPython3順序付き辞書 53
  54. 54. ここが便利だよPython3順序付き辞書>>> d = {}>>> d["Linux"] = "Arch">>> d["BSD"] = "Free">>> d["Mac"] = "Lion">>> d["Windows"] = "sucks">>> for k, v in d.items():... print(k, v)...BSD FreeWindows sucksMac LionLinux Arch>>> 組み込み型の辞書 54
  55. 55. ここが便利だよPython3順序付き辞書>>> d = {} >>> import collections>>> d["Linux"] = "Arch" >>> d = collections.OrderedDict()>>> d["BSD"] = "Free" >>> d["Linux"] = "Arch">>> d["Mac"] = "Lion" >>> d["BSD"] = "Free">>> d["Windows"] = "sucks" >>> d["Mac"] = "Lion">>> for k, v in d.items(): >>> d["Windows"] = "sucks"... print(k, v) >>> for k, v in d.items():... ... print(k, v)BSD Free ...Windows sucks Linux ArchMac Lion BSD FreeLinux Arch Mac Lion>>> Windows sucks >>> 組み込み型の辞書 順序付き辞書 55
  56. 56. ここまでであることに気がついた方 56
  57. 57. Python3.xにしかない便利機能を紹介すると言ったな 57
  58. 58. あれは嘘だ 58
  59. 59. ● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 59
  60. 60. ● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 実はすべてPython2.7に バックポートされているという事実 60
  61. 61. ● ただし、2.7はあくまで3.xへの移行を容易にするの が目的 61
  62. 62. ● ただし、2.7はあくまで3.xへの移行を容易にするの が目的● 2系の最終リリース (予定) 62
  63. 63. Python3.2 63
  64. 64. Python3.2http://docs.python.org/py3k/whatsnew/3.2.html 64
  65. 65. Python3.2● ElementTree 1.3 (xml.etree.ElementTree)● LRU cache decorator (functools.lru_cache)● Command line option parser (argparse)● Unicode 6.0.0● etc... 65
  66. 66. まとめ 66
  67. 67. まとめ● 今から始めるならPython3● 新しい機能を使いたいならPython3● マルチバイト周りで苦労したくないならPython3● 現実的にはPython2と3の併用 67
  68. 68. 質疑応答 68
  69. 69. ありがとうございました 69

×