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,345 views
3,253 views

Published on

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,345
On SlideShare
0
From Embeds
0
Number of Embeds
521
Actions
Shares
0
Downloads
17
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

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

×