Your SlideShare is downloading. ×
0
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Python Kyoto study
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Python Kyoto study

2,964

Published on

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,964
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
15
Comments
1
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Python3のススメ Python京都勉強会 2011-06-11 1
  • 2. お前、誰よ● 稲田 尚也 (@naoina)● 株式会社SOBAプロジェクト所属● Python歴はたぶん9ヶ月ぐらい (bitbucket調べ)● http://www.naniyueni.org/● 最近は音ゲー(REFLEC BEAT、jubeat)をやってた りします 2
  • 3. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 3
  • 4. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 4
  • 5. Pythonとは 5
  • 6. Pythonとは● 動的型付けのオブジェクト指向プログラミング言語● 作者はGuido van Rossum氏● 名前の由来は「空飛ぶモンティ・パイソン」から ● ニシキヘビからじゃないよ!● Googleの公式言語の1つ 6
  • 7. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 7
  • 8. 特徴 8
  • 9. 特徴● インタプリタ● オフサイドルール (インデントが構文の一部)● ダックタイピング● batteries included 9
  • 10. 特徴インタプリタ 10
  • 11. 特徴インタプリタhttp://ja.wikipedia.org/wiki/インタプリタ 11
  • 12. 特徴インタプリタ % cat juicy_karaage.py say = "No.1" print(say) % python juicy_karaage.py No.1 12
  • 13. 特徴オフサイドルール 13
  • 14. 特徴 オフサイドルールhttp://ja.wikipedia.org/wiki/オフサイドルール 14
  • 15. 特徴オフサイドルール def f(): print("running f()") def main(): f() if __name__ == "__main__": main() 15
  • 16. 特徴ダックタイピング 16
  • 17. 特徴 ダックタイピングhttp://ja.wikipedia.org/wiki/ダックタイピング 17
  • 18. 特徴ダックタイピング もしそれがアヒルのように歩き アヒルのように鳴くのならば それはアヒルである 18
  • 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. 特徴ダックタイピング ソース 実行結果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
  • 22. 特徴batteries included 22
  • 23. 特徴batteries included http://docs.python.org/py3k/library/ 2系は http://docs.python.org/library/ 23
  • 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. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 25
  • 26. 2系と3系 26
  • 27. 2系と3系Python2.x 27
  • 28. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向け 28
  • 29. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x 29
  • 30. 2系と3系Python2.x – 最新リリースは2.7.1 – マルチバイトを意識しないとハマる – 現状のサードパーティ製ライブラリはほとんど2.x向けPython3.x – 最新リリースは3.2 – ほとんど意識することなくマルチバイトを扱える – 新しい機能が使える 30
  • 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. 2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの") 32
  • 33. 2系と3系マルチバイト文字列Python3.xでは >>> "生ける" + "炎" 生ける炎 >>> print("名状しがたいPerlのようなもの") UTF-8で書けばほぼ問題は出ない! 33
  • 34. アジェンダ● Pythonとは● 特徴● 2系と3系● 機能紹介 34
  • 35. 機能紹介 35
  • 36. 機能紹介 36
  • 37. ここが便利だよ Python3 37
  • 38. ここが便利だよPython3 Python3.xにしかない 便利機能を紹介 38
  • 39. ここが便利だよPython3● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 39
  • 40. ここが便利だよPython3集合リテラル 40
  • 41. ここが便利だよPython3集合リテラル>>> {1, 2, 3, 2, 1}{1, 2, 3}>>>>>> {"madoka", "ao", "mami", "anko", "hmhm", "mami"}{mami, madoka, hmhm, ao, anko}>>> 41
  • 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. ここが便利だよPython3内包表記 43
  • 44. ここが便利だよPython3内包表記>>> [i for i in range(10)][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>※Python2.xでも出来る 44
  • 45. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 45
  • 46. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 辞書も内包表記出来る! 46
  • 47. ここが便利だよPython3内包表記>>> {i: i * 2 for i in range(5)}{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}>>> 辞書も内包表記出来る! さらに・・・ 47
  • 48. ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ミストルティンキック, 知ってる?, キックじゃない}>>> 48
  • 49. ここが便利だよPython3内包表記>>> a = ["知ってる?", "知らない", "ミストルティンキック"]>>> b = ["キックじゃない", "知ってる?", "知らない"]>>> {x for x in a + b}{知らない, ミストルティンキック, 知ってる?, キックじゃない}>>> 集合も内包表記出来る! 49
  • 50. ここが便利だよPython3複数with文 50
  • 51. ここが便利だよPython3複数with文Python2.xwith open("in.txt") as infile: with open("out.txt", "w") as outfile: outfile.write(infile.read()) 51
  • 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. ここが便利だよPython3順序付き辞書 53
  • 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. ここが便利だよ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
  • 57. Python3.xにしかない便利機能を紹介すると言ったな 57
  • 58. あれは嘘だ 58
  • 59. ● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 59
  • 60. ● 集合リテラル● 内包表記● 複数with文● 順序付き辞書 実はすべてPython2.7に バックポートされているという事実 60
  • 61. ● ただし、2.7はあくまで3.xへの移行を容易にするの が目的 61
  • 62. ● ただし、2.7はあくまで3.xへの移行を容易にするの が目的● 2系の最終リリース (予定) 62
  • 63. Python3.2 63
  • 64. Python3.2http://docs.python.org/py3k/whatsnew/3.2.html 64
  • 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
  • 67. まとめ● 今から始めるならPython3● 新しい機能を使いたいならPython3● マルチバイト周りで苦労したくないならPython3● 現実的にはPython2と3の併用 67
  • 68. 質疑応答 68
  • 69. ありがとうございました 69

×