Mais conteúdo relacionado Semelhante a Python Kyoto study (20) Python Kyoto study2. お前、誰よ
●
稲田 尚也 (@naoina)
●
株式会社SOBAプロジェクト所属
●
Python歴はたぶん9ヶ月ぐらい (bitbucket調べ)
●
http://www.naniyueni.org/
●
最近は音ゲー(REFLEC BEAT、jubeat)をやってた
りします
2
3. アジェンダ
●
Pythonとは
●
特徴
●
2系と3系
●
機能紹介
3
4. アジェンダ
●
Pythonとは
●
特徴
●
2系と3系
●
機能紹介
4
6. Pythonとは
●
動的型付けのオブジェクト指向プログラミング言語
●
作者はGuido van Rossum氏
●
名前の由来は「空飛ぶモンティ・パイソン」から
●
ニシキヘビからじゃないよ!
●
Googleの公式言語の1つ
6
7. アジェンダ
●
Pythonとは
●
特徴
●
2系と3系
●
機能紹介
7
9. 特徴
●
インタプリタ
●
オフサイドルール (インデントが構文の一部)
●
ダックタイピング
●
batteries included
9
12. 特徴
インタプリタ
% cat juicy_karaage.py
say = "No.1"
print(say)
% python juicy_karaage.py
No.1
12
15. 特徴
オフサイドルール
def f():
print("running f()")
def main():
f()
if __name__ == "__main__":
main()
15
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
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
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 can't decode byte 0xe3
in position 0: ordinal not in range(128)
>>>
# coding: utf-8
print "名状しがたいバールのようなもの"
31
34. アジェンダ
●
Pythonとは
●
特徴
●
2系と3系
●
機能紹介
34
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
48. ここが便利だよPython3
内包表記
>>> a = ["知ってる?", "知らない", "ミストルティンキック"]
>>> b = ["キックじゃない", "知ってる?", "知らない"]
>>> {x for x in a + b}
{'知らない', 'ミストルティンキック', '知ってる?', 'キックじゃない'}
>>>
48
49. ここが便利だよPython3
内包表記
>>> a = ["知ってる?", "知らない", "ミストルティンキック"]
>>> b = ["キックじゃない", "知ってる?", "知らない"]
>>> {x for x in a + b}
{'知らない', 'ミストルティンキック', '知ってる?', 'キックじゃない'}
>>>
集合も内包表記出来る!
49
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 Free
Windows sucks
Mac Lion
Linux 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 Arch
Mac Lion BSD Free
Linux Arch Mac Lion
>>> Windows sucks
>>>
組み込み型の辞書 順序付き辞書 55
59. ●
集合リテラル
●
内包表記
●
複数with文
●
順序付き辞書
59
60. ●
集合リテラル
●
内包表記
●
複数with文
●
順序付き辞書
実はすべてPython2.7に
バックポートされているという事実
60
61. ●
ただし、2.7はあくまで3.xへの移行を容易にするの
が目的
61
62. ●
ただし、2.7はあくまで3.xへの移行を容易にするの
が目的
●
2系の最終リリース (予定)
62
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
67. まとめ
●
今から始めるならPython3
●
新しい機能を使いたいならPython3
●
マルチバイト周りで苦労したくないならPython3
●
現実的にはPython2と3の併用
67