SlideShare a Scribd company logo
Copyright c 2004 Python Japan User's Group.
Lightweight Language Weekend ‘04
Python Language Update
Python
Language Update
2004.08.07
増田 泰  ( 日本 Python ユーザ
会 )
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Agenda
• Python とは
– Python の特徴
– ここが便利
– こんなことも ...
• Language Update
– Python の系譜
– Python 2.3 系列
– Python 2.4 系列
– その他
• まとめ
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python とは?
〉〉
〉
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
$ python
Python 2.3.4 (#53, May
Type "help", "copyright
〉〉〉 print “Hello world”
Hello world
〉〉〉 
...
try:
dh = probeDevice()
except IOError:
rollbackDevice()
dh.operate()
...
Python の特徴
Python はインタプリタです
• 対話シェルやスクリプトからバイトコードを生成して
実行します
オブジェクト指向プログラミングをサポートし
ています
• データや関数をオブジェクト (PyObject) として管理
します
• クラスを他のクラスや組み込み型から導出したり自作
したりできます
ものごとの多くを柔軟に,動的に決めます
• 変数や関数の型を宣言しません
• エラー処理は try… except で行います
• 参照カウントに基づいてメモリを管理します
ソースもバイナリも,無料で入手して利用でき
ます *The “OSI certified” logo is trademark of Open Source Initiative.
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python はここが便利
インストールしたらすぐ使えます : “Batteries Included”
– 文法は単純で学びやすく,インデントでブロック構造をきれいに書
けます
– さまざまな標準モジュールと開発環境を最初から使えます
csv, os, socket, crypt, codecs, Tkinter, xml, etc…
ドキュメントが充実しています
– チュートリアルから言語仕様まで網羅した標準ドキュメントがあり
ます
– 標準ライブラリや機能拡張の提案 (PEP) はガイドラインに従って
reStructuredText や TeX  で文書化されます
– ML archive や豊富なレシピ集が Web 上にあります
モジュールで高い拡張性を実現しています
– Python だけでなく, C や C++ で高速な拡張モジュールを書けま
す.
– インタプリタや内部データ型を操作する API が公開されていて,他
のプログラムに Python を埋め込めます.
Zen of
Python
c
Python
Delphi
ObjC
Py
Py
Py
Py
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
# coding: shift_jis
import wx
app = wx.PySimpleApp(0)
frame = wx.Frame(None, -1, u' 日本語表示 ')
btn = wx.Button(frame, -1, u' パイソン python 牌尊 ')
Python はこんなこともできます
• クロスプラットフォームな GUI プログラムを
書けます
– wxWidgets や Qt へのバインドがあり,国際化もで
きます
• 科学・工学分野のツールを呼び出せます
– Numeric/numarray( 数値計算 ), Orange( 機械学習 ),
Pyro ( ロボット ), biopython ( 情報生物学 ), NLTK ( 自
然言語処理 ), etc...
• 画像処理や可視化を行えます
– PIL ( 画像処理 ), ReportLab (PDF 生成 ), VTK ( 可視化
ライブラリ ), OpenGL, PyFX (cg), PyGame (SDL),
etc...
• スクリプトを実行形式にパッケージ化できます
– Cx_Freeze (Unix/win32), py2exe (win32),
.exe
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python はこんなところにも使われています
• 機能拡張言語として利用されています
Blender3D, Poser (CG モデラ ), Gimp ( ペイント ), glucose (RSS
リーダ ), OpenOffice.org ( プロダクティビティ ), etc...
• 様々なアプリケーション開発に使われています
– Zope (Web アプリケーションサーバ ), Chandler (PIM),
Bittorrent (P2P ファイル共有 ), EVE (MMORPG) など
• 携帯電話のプログラミング言語としても注目されていま
す
Nokia が Series60 の開発言語に Python を検討中 (04/02/11)
• いくつかの実装系があります
– Jython (Java – Java のライブラリを import できます )
– Stackless Python ( –スタックを使わない実装 実行状態を保存可
能 )
– Python for .Net (.Net framework –上の実装 まだ未完成 )
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Language
Update
Update
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python 2.4a2
(04/08/05/)
development
Python/Jython の系譜
1990 1995 2000
0.9
1.0
1.3
1.5
1.5.2
2004
2.3
2.3.3
2.3.4
2.42.3.5
2005
1.6
1.6.1
2.0
2.1
2.0.1
2.2
2.1.3
2.2.2
2.2.3
1.0
1.1
2.0
2.1
Python
2.2a0
2.5~2.9
3.0~
Python 2.3.4
(04/05/27)
current
Python 2.2.3
(03/05/30)
resting
Jython 2.2a0
(03/07/31)
development
2.2
ジェネレータ式 , CJKcodecs, decimal, 関数修飾子
2.5~(<=2.9): パフォーマンス,互換性重視の変更
3.0~ : 非互換の変更,モジュール配置の再考など
比較演算子の override
List の内包表記
Unicode サポー
ト
イテレータ
ジェネレータ , Bool 型,ソース文字コード認識
2.0 互換, Unicode サポート
zxJDBC/DB-API, jar からのモジュール検索
2.2 互換 ( 組み込み型導出 )
Jython
2002 20042003 2005
2.4a1
2.4a2
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python 2.3 系列
2.2 系列以後の新機能
– ジェネレータ (generator)
– データ型の追加
• 組み込み Bool 型 (True/False): 真偽値を明示的に書けるように
• Set 型 : 集合間の包含,結合,交差,差分などの操作を扱いやすく
– ソースコードエンコーディング認識
ヘッダにエンコードを指定すると,リテラルを自動的にデコード
– universal newline
• プラットフォーム間の改行文字の違いを意識せずに
テキストファイルを読める
def fib(N):
cur, prev = [1, 1]
yield prev
yield cur
for i in range(N):
cur, prev = [cur+prev, cur]
yield cur
• g = fib(...) でジェネレータ生成
• g.next() を呼ぶごとに,次の yield まで実行
• return 文,ブロックの末尾,例外で終了
∴ g(N) → 1, 1, 2, 3, 5, 8... を返す.
逐次計算できる巨大な集合を効率的に表現
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python 2.3 系列 (cnt’d)
その他の機能追加
– インデクスループを書きやすく : enumerate()
enumerate([a ,b, c, …]) (0, a), (1, b), (2, c), …→ を返す
– CSV 形式を扱いやすく : csv
(Excel や DB が出力する ) タブやカンマ区切りのデータを解釈
– zip ファイル内にモジュールを : zipimport
zip ファイル中からモジュールを検索できる : パッケージ化に便利
2.3.3 (03/12/24) および 2.3.4 (04/05/27)
– 機能追加なし, bugfix のみ
– 2.3.4 では Win32 版に Tk Interface eXtension 追加
– 2.4 が主流になる前に 2.3.5 が出る(かもしれない) ?
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Python 2.4 系列
リリース予定
• alpha: 2.4a1 (2004/7/8), 2.4a2 (2004/8/5), 2.4a3 (2004/8/19?)
• beta: 2004/8 ?
• release: 2004/9 ?
2.3 以後の新機能
– ジェネレータを書きやすく : ジェネレータ式 (generator expression)
内包表記 [x*2 for x in range(10)] →   [1, 4, 9, 16, ...] に対して
(x*2 for x in range(10)) は ( 値を一括生成せず ) ジェネレータを返す
– リスト操作をもっと便利に : sorted()/reversed()
• a.sort() や a.reverse() は a を返さない (a 自体を変更してしまうため )
• 並べ替え済みのコピーを返す sorted()/reversed() 追加
– 文字コード codec を充実 : CJK codecs の追加
日中韓文字コードの codec が標準配布物に取り込まれる
– 通貨計算を扱いやすく : decimal モジュールの追加
10 進固定小数点数の正確な表現が可能に
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
未確定の機能
– 関数修飾子 (function decorator)
• 静的メソッドやクラスメソッドをもっと定義しやすくする
• 構文の是非はまだ論議されているが,
とにかく @ を使った構文が 2.4a2 で
導入された
– 複数行にわたる import 文
Python 2.4 系列
class aClass:
def func(args):
...
func =
staticmethod(func)
class aClass:
*decorator* func(args):
...
>>> @staticmethod
... def func(a):
... return "hello decorator"
...
>>>
>>> func
<staticmethod object at 0x00934870>
>>>
from mymod import (foo,
bar, spam, bacon)
...
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
その他
サードパーティモジュール
– モジュールインデクス PyPI: http://www.python.org/pypi/
配布ツール distutils を使った登録や更新が可能に
– Numeric は numarray へ
• コードの見直しと機能追加
• SciPy や PyOpenGL など,序々に対応へ
ドキュメント
– 和訳プロジェクトによる標準ドキュメント和訳
2.3.3 訳了版リリース (2004/6/28 - まだ改善の余地あり.協力者求
む! )
PDF, info, HTML, Windows CHM 形式で配布中
– PEP やモジュールドキュメントなど,様々な関連文書の和訳
– Python クイックリファレンス
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
まとめ
Python は実は便利だ
Python makes joys of computing… !!
ご静聴ありがとうございま
した
Python はこれからもっと便利になる
一緒に Python を便利にしてゆきましょう
本家 : http://www.python.org/
日本 Python ユーザ会 : http://www.python.jp/
日本 Python メーリングリスト :
http://www.python.jp/mailman/listinfo/python-ml-jp
ドキュメント和訳プロジェクト :
http://www.python.jp/Zope/pythondoc_jp
Lightweight Language
Weekend ’04
Python Language Update
Copyright c 2004 Python Japan User's Group.
Acknowledgements and Copyrights
• ヘッダおよびフッタのアートワークは 柴田淳氏よりご提供いただきました
.
Copyright (c) 2004 Python Japan User's Group
• 資料中に使われているクリップアートワークは, Microsoft OfficeOnline ク
リップアートコレクションをもとに作成しました.
使用条件については http://office.microsoft.com/clipart/ をご覧ください.
• その他クリップアートを使わない図形や写真,および本文テキストの著作権
は増田泰 (ymasuda at ethercube.com) および日本 Python ユーザ会に帰属
し,以下の条件で再配布および改変を認めます.
Copyright Notice
Copyright Yasushi Masuda, Python Japan User's Group, 2004 All Rights Reserved
Permission to use, copy, modify, and distribute this product for any purpose and without fee is hereby granted, provided that above
copyright notice and this permission notice is attached with every copies or distributions.
Disclaimer
Yasushi Masuda and Python Japan User's Group (together as the author hereafter) disclaims all warranties with regard to this product,
including all implied warranties of merchantability and fitness, in no event the author shall be liable for any special, indirect or consequential
damages or any damages whatsoever resulting from loss of use, data or profits, whatever in an action pf contract, negligence or other
tortious action, arising out of or in connection with the use or derivation of this product.
The author makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness
of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately-owned rights.
Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not
necessarily constitute or imply its endorsement, recommendation, or favoring by the author. The views and opinions of authors expressed
herein do not necessarily state or reflect those of the author, and shall not be used for advertising or product endorsement purposes.

More Related Content

What's hot (20)

PDF
Python3 プログラミング勉強会
Tetsuya Morimoto
 
PDF
なぜ科学計算にはPythonか?
Aki Ariga
 
PDF
Python パッケージの影響を歴史から理解してみよう!
Kir Chou
 
PPTX
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
 
PDF
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
Lina Katayose
 
PDF
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
 
PDF
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
PDF
PEP8を読んでみよう
2bo 2bo
 
PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
aoshiman
 
PDF
Python 2/3コード共存戦略 #osakapy
敦志 金谷
 
PDF
第1回python勉強会
Yoshio Shimomura
 
PDF
PyCon JP 2014 plone terada
Manabu Terada
 
PDF
Pyconjp2014_implementations
masahitojp
 
PDF
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
 
PDF
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
 
PPTX
Pynyumon03 LT
drillan
 
KEY
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 
PDF
Pyconjp2016 pyftplib
Shinya Okano
 
PDF
PyQtではじめるGUIプログラミング
Ransui Iso
 
PPTX
各OSにおいて、OpenCVをpythonから使う方法
Katsuhiro Morishita
 
Python3 プログラミング勉強会
Tetsuya Morimoto
 
なぜ科学計算にはPythonか?
Aki Ariga
 
Python パッケージの影響を歴史から理解してみよう!
Kir Chou
 
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
 
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
Lina Katayose
 
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
 
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
PEP8を読んでみよう
2bo 2bo
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
aoshiman
 
Python 2/3コード共存戦略 #osakapy
敦志 金谷
 
第1回python勉強会
Yoshio Shimomura
 
PyCon JP 2014 plone terada
Manabu Terada
 
Pyconjp2014_implementations
masahitojp
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
 
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
 
Pynyumon03 LT
drillan
 
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 
Pyconjp2016 pyftplib
Shinya Okano
 
PyQtではじめるGUIプログラミング
Ransui Iso
 
各OSにおいて、OpenCVをpythonから使う方法
Katsuhiro Morishita
 

Similar to Python languageupdate (2004) (20)

PDF
LLdeade Python Language Update
Atsushi Shibata
 
PDF
Python Kyoto study
Naoya Inada
 
PDF
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
 
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
PDF
Python & PyConJP 2014 Report
gree_tech
 
ODP
Introduction of Python
Tomoya Nakayama
 
PDF
PyPy 紹介
shoma h
 
PDF
エキ Py 読書会02 2010/9/7
Tetsuya Morimoto
 
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
 
PDF
Python overview
yassu0320
 
PDF
Python overview
yassu0320
 
PPTX
Wacode5thでのpython講義資料
丈 宮本
 
KEY
Pythonについて
Kenji NAKAGAKI
 
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
PDF
Wrapping a C++ library with Cython
fuzzysphere
 
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
 
PDF
エキ Py 読書会02 2章前半
Tetsuya Morimoto
 
PDF
エキ Py 読書会02 2章後半
Tetsuya Morimoto
 
PPTX
Introduction to Python 3.4 as of beta 1
Toru Furukawa
 
PDF
Python入門
Shohei Okada
 
LLdeade Python Language Update
Atsushi Shibata
 
Python Kyoto study
Naoya Inada
 
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
 
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
Python & PyConJP 2014 Report
gree_tech
 
Introduction of Python
Tomoya Nakayama
 
PyPy 紹介
shoma h
 
エキ Py 読書会02 2010/9/7
Tetsuya Morimoto
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
 
Python overview
yassu0320
 
Python overview
yassu0320
 
Wacode5thでのpython講義資料
丈 宮本
 
Pythonについて
Kenji NAKAGAKI
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
Wrapping a C++ library with Cython
fuzzysphere
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
 
エキ Py 読書会02 2章前半
Tetsuya Morimoto
 
エキ Py 読書会02 2章後半
Tetsuya Morimoto
 
Introduction to Python 3.4 as of beta 1
Toru Furukawa
 
Python入門
Shohei Okada
 
Ad

More from 泰 増田 (7)

PDF
PlaySQLAlchemyORM2017.key
泰 増田
 
PDF
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
PDF
SQLAlchemy Primer
泰 増田
 
PPTX
Taming robotframework
泰 増田
 
PPTX
Robot Framework (のSelenium2Libraryのお話)
泰 増田
 
PDF
Django boodoo
泰 増田
 
PDF
wxPython入門(大阪Pythonユーザの集まり2014/03)
泰 増田
 
PlaySQLAlchemyORM2017.key
泰 増田
 
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
SQLAlchemy Primer
泰 増田
 
Taming robotframework
泰 増田
 
Robot Framework (のSelenium2Libraryのお話)
泰 増田
 
Django boodoo
泰 増田
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
泰 増田
 
Ad

Python languageupdate (2004)

  • 1. Copyright c 2004 Python Japan User's Group. Lightweight Language Weekend ‘04 Python Language Update Python Language Update 2004.08.07 増田 泰  ( 日本 Python ユーザ 会 )
  • 2. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Agenda • Python とは – Python の特徴 – ここが便利 – こんなことも ... • Language Update – Python の系譜 – Python 2.3 系列 – Python 2.4 系列 – その他 • まとめ
  • 3. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python とは? 〉〉 〉
  • 4. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. $ python Python 2.3.4 (#53, May Type "help", "copyright 〉〉〉 print “Hello world” Hello world 〉〉〉  ... try: dh = probeDevice() except IOError: rollbackDevice() dh.operate() ... Python の特徴 Python はインタプリタです • 対話シェルやスクリプトからバイトコードを生成して 実行します オブジェクト指向プログラミングをサポートし ています • データや関数をオブジェクト (PyObject) として管理 します • クラスを他のクラスや組み込み型から導出したり自作 したりできます ものごとの多くを柔軟に,動的に決めます • 変数や関数の型を宣言しません • エラー処理は try… except で行います • 参照カウントに基づいてメモリを管理します ソースもバイナリも,無料で入手して利用でき ます *The “OSI certified” logo is trademark of Open Source Initiative.
  • 5. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python はここが便利 インストールしたらすぐ使えます : “Batteries Included” – 文法は単純で学びやすく,インデントでブロック構造をきれいに書 けます – さまざまな標準モジュールと開発環境を最初から使えます csv, os, socket, crypt, codecs, Tkinter, xml, etc… ドキュメントが充実しています – チュートリアルから言語仕様まで網羅した標準ドキュメントがあり ます – 標準ライブラリや機能拡張の提案 (PEP) はガイドラインに従って reStructuredText や TeX  で文書化されます – ML archive や豊富なレシピ集が Web 上にあります モジュールで高い拡張性を実現しています – Python だけでなく, C や C++ で高速な拡張モジュールを書けま す. – インタプリタや内部データ型を操作する API が公開されていて,他 のプログラムに Python を埋め込めます. Zen of Python c Python Delphi ObjC Py Py Py Py
  • 6. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. # coding: shift_jis import wx app = wx.PySimpleApp(0) frame = wx.Frame(None, -1, u' 日本語表示 ') btn = wx.Button(frame, -1, u' パイソン python 牌尊 ') Python はこんなこともできます • クロスプラットフォームな GUI プログラムを 書けます – wxWidgets や Qt へのバインドがあり,国際化もで きます • 科学・工学分野のツールを呼び出せます – Numeric/numarray( 数値計算 ), Orange( 機械学習 ), Pyro ( ロボット ), biopython ( 情報生物学 ), NLTK ( 自 然言語処理 ), etc... • 画像処理や可視化を行えます – PIL ( 画像処理 ), ReportLab (PDF 生成 ), VTK ( 可視化 ライブラリ ), OpenGL, PyFX (cg), PyGame (SDL), etc... • スクリプトを実行形式にパッケージ化できます – Cx_Freeze (Unix/win32), py2exe (win32), .exe
  • 7. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python はこんなところにも使われています • 機能拡張言語として利用されています Blender3D, Poser (CG モデラ ), Gimp ( ペイント ), glucose (RSS リーダ ), OpenOffice.org ( プロダクティビティ ), etc... • 様々なアプリケーション開発に使われています – Zope (Web アプリケーションサーバ ), Chandler (PIM), Bittorrent (P2P ファイル共有 ), EVE (MMORPG) など • 携帯電話のプログラミング言語としても注目されていま す Nokia が Series60 の開発言語に Python を検討中 (04/02/11) • いくつかの実装系があります – Jython (Java – Java のライブラリを import できます ) – Stackless Python ( –スタックを使わない実装 実行状態を保存可 能 ) – Python for .Net (.Net framework –上の実装 まだ未完成 )
  • 8. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Language Update Update
  • 9. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python 2.4a2 (04/08/05/) development Python/Jython の系譜 1990 1995 2000 0.9 1.0 1.3 1.5 1.5.2 2004 2.3 2.3.3 2.3.4 2.42.3.5 2005 1.6 1.6.1 2.0 2.1 2.0.1 2.2 2.1.3 2.2.2 2.2.3 1.0 1.1 2.0 2.1 Python 2.2a0 2.5~2.9 3.0~ Python 2.3.4 (04/05/27) current Python 2.2.3 (03/05/30) resting Jython 2.2a0 (03/07/31) development 2.2 ジェネレータ式 , CJKcodecs, decimal, 関数修飾子 2.5~(<=2.9): パフォーマンス,互換性重視の変更 3.0~ : 非互換の変更,モジュール配置の再考など 比較演算子の override List の内包表記 Unicode サポー ト イテレータ ジェネレータ , Bool 型,ソース文字コード認識 2.0 互換, Unicode サポート zxJDBC/DB-API, jar からのモジュール検索 2.2 互換 ( 組み込み型導出 ) Jython 2002 20042003 2005 2.4a1 2.4a2
  • 10. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python 2.3 系列 2.2 系列以後の新機能 – ジェネレータ (generator) – データ型の追加 • 組み込み Bool 型 (True/False): 真偽値を明示的に書けるように • Set 型 : 集合間の包含,結合,交差,差分などの操作を扱いやすく – ソースコードエンコーディング認識 ヘッダにエンコードを指定すると,リテラルを自動的にデコード – universal newline • プラットフォーム間の改行文字の違いを意識せずに テキストファイルを読める def fib(N): cur, prev = [1, 1] yield prev yield cur for i in range(N): cur, prev = [cur+prev, cur] yield cur • g = fib(...) でジェネレータ生成 • g.next() を呼ぶごとに,次の yield まで実行 • return 文,ブロックの末尾,例外で終了 ∴ g(N) → 1, 1, 2, 3, 5, 8... を返す. 逐次計算できる巨大な集合を効率的に表現
  • 11. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python 2.3 系列 (cnt’d) その他の機能追加 – インデクスループを書きやすく : enumerate() enumerate([a ,b, c, …]) (0, a), (1, b), (2, c), …→ を返す – CSV 形式を扱いやすく : csv (Excel や DB が出力する ) タブやカンマ区切りのデータを解釈 – zip ファイル内にモジュールを : zipimport zip ファイル中からモジュールを検索できる : パッケージ化に便利 2.3.3 (03/12/24) および 2.3.4 (04/05/27) – 機能追加なし, bugfix のみ – 2.3.4 では Win32 版に Tk Interface eXtension 追加 – 2.4 が主流になる前に 2.3.5 が出る(かもしれない) ?
  • 12. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Python 2.4 系列 リリース予定 • alpha: 2.4a1 (2004/7/8), 2.4a2 (2004/8/5), 2.4a3 (2004/8/19?) • beta: 2004/8 ? • release: 2004/9 ? 2.3 以後の新機能 – ジェネレータを書きやすく : ジェネレータ式 (generator expression) 内包表記 [x*2 for x in range(10)] →   [1, 4, 9, 16, ...] に対して (x*2 for x in range(10)) は ( 値を一括生成せず ) ジェネレータを返す – リスト操作をもっと便利に : sorted()/reversed() • a.sort() や a.reverse() は a を返さない (a 自体を変更してしまうため ) • 並べ替え済みのコピーを返す sorted()/reversed() 追加 – 文字コード codec を充実 : CJK codecs の追加 日中韓文字コードの codec が標準配布物に取り込まれる – 通貨計算を扱いやすく : decimal モジュールの追加 10 進固定小数点数の正確な表現が可能に
  • 13. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. 未確定の機能 – 関数修飾子 (function decorator) • 静的メソッドやクラスメソッドをもっと定義しやすくする • 構文の是非はまだ論議されているが, とにかく @ を使った構文が 2.4a2 で 導入された – 複数行にわたる import 文 Python 2.4 系列 class aClass: def func(args): ... func = staticmethod(func) class aClass: *decorator* func(args): ... >>> @staticmethod ... def func(a): ... return "hello decorator" ... >>> >>> func <staticmethod object at 0x00934870> >>> from mymod import (foo, bar, spam, bacon) ...
  • 14. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. その他 サードパーティモジュール – モジュールインデクス PyPI: http://www.python.org/pypi/ 配布ツール distutils を使った登録や更新が可能に – Numeric は numarray へ • コードの見直しと機能追加 • SciPy や PyOpenGL など,序々に対応へ ドキュメント – 和訳プロジェクトによる標準ドキュメント和訳 2.3.3 訳了版リリース (2004/6/28 - まだ改善の余地あり.協力者求 む! ) PDF, info, HTML, Windows CHM 形式で配布中 – PEP やモジュールドキュメントなど,様々な関連文書の和訳 – Python クイックリファレンス
  • 15. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. まとめ Python は実は便利だ Python makes joys of computing… !! ご静聴ありがとうございま した Python はこれからもっと便利になる 一緒に Python を便利にしてゆきましょう 本家 : http://www.python.org/ 日本 Python ユーザ会 : http://www.python.jp/ 日本 Python メーリングリスト : http://www.python.jp/mailman/listinfo/python-ml-jp ドキュメント和訳プロジェクト : http://www.python.jp/Zope/pythondoc_jp
  • 16. Lightweight Language Weekend ’04 Python Language Update Copyright c 2004 Python Japan User's Group. Acknowledgements and Copyrights • ヘッダおよびフッタのアートワークは 柴田淳氏よりご提供いただきました . Copyright (c) 2004 Python Japan User's Group • 資料中に使われているクリップアートワークは, Microsoft OfficeOnline ク リップアートコレクションをもとに作成しました. 使用条件については http://office.microsoft.com/clipart/ をご覧ください. • その他クリップアートを使わない図形や写真,および本文テキストの著作権 は増田泰 (ymasuda at ethercube.com) および日本 Python ユーザ会に帰属 し,以下の条件で再配布および改変を認めます. Copyright Notice Copyright Yasushi Masuda, Python Japan User's Group, 2004 All Rights Reserved Permission to use, copy, modify, and distribute this product for any purpose and without fee is hereby granted, provided that above copyright notice and this permission notice is attached with every copies or distributions. Disclaimer Yasushi Masuda and Python Japan User's Group (together as the author hereafter) disclaims all warranties with regard to this product, including all implied warranties of merchantability and fitness, in no event the author shall be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whatever in an action pf contract, negligence or other tortious action, arising out of or in connection with the use or derivation of this product. The author makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately-owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the author. The views and opinions of authors expressed herein do not necessarily state or reflect those of the author, and shall not be used for advertising or product endorsement purposes.

Editor's Notes

  • #2: thanks chair, それではプログラミング言語Python のLanguage Update について,日本Python ユーザ会の増田から発表させていただきます.
  • #3: こういった構成でお話をさせていただきたいと思います.時間があまりないので,駆け足になりますがご容赦ください. まずPython について簡単に紹介というか,宣伝をさせていただきます. それから,昨年度リリースされ,現在メインストリームになっている 2.3 系列と, 先月αリリースされ,現在developmental state にある 2.4 系列について Updates をご報告させていただきます.
  • #4: さて,Pythonとは?
  • #5: Pythonはソースコードをネイティブコードにコンパイルしない,インタプリタでバイトコードを逐次実行するタイプの言語です. バイトコードは対話シェルやスクリプトから自動的に生成されるので,開発サイクルをさくさく回せる,Lightweight というわけです. オブジェクト指向プログラミングに対するサポートもあります.Python のバックエンドとなる C レベルでは,データや関数は PyObject 型の構造体として管理されています.他のクラスや組み込み型から多重継承でサブクラスを作成でき,Python レベルでも C レベルでも拡張を行えます. Pythonは物事の多くを動的に決めます.例えば変数や関数の型宣言を行わず,属性参照やメソッド呼び出し時の結合は実行時に 解決されます. また,エラー処理は try: ... except: で捕捉して解決する戦略を取っていて,柔軟にエラー処理を書けます. オブジェクトのメモリ管理は基本的に参照カウントに基づいてランタイム側で行われていて,ユーザは普通メモリ管理のことを 心配しなくてよいようになっています.
  • #6: さて,ここまでだと,なんだかどの言語の紹介でも当てはまりそうですね...もう少し Python のパワフルなところを 紹介しましょう. まず,Pythonはインストールしたらすぐ使えます. 文法は単純で学びやすく,インデントを使ってブロック構造を書くので,初心者でもWizard でも,だれが書いても 同じようにかけてしまいます. もっと重要なのは,標準の配布物に様々なモジュールと開発環境がついてくるということです. 皆さんスクリプト言語でやっつけ仕事をしたことはよくありますよね?タブ区切りのデータを処理しろ? Python には csv パーザがあります. プロセス制御? os を制御するモジュールがあります.ネットワークプログラミング? socket があります.日本語コード変換? エンコーダデコーダが 一そろいあります.GUIなら Tk を使えます. xml のライブラリもあります. 次にドキュメントが/実は/充実しています. チュートリアルから言語仕様まで,ほとんどの Python の仕様が標準ドキュメントとしてついてきてPythonをしゃぶりつくせます. 機能拡張や新たなライブラリの提案は,ほとんどがPEPと呼ばれる提案書やマニュアルになります. reStructuredText やTeX を使ったドキュメント記述のガイドラインもあります. ML アーカイブやレシピもたくさんあります. ただし,ほとんどが英語で書かれていることがちょっと難点ですね...これについては後でまた触れます. それから,高い拡張性もPython の売りです. Cや C++ で高速な拡張モジュールをかけます.その逆に,Cや C++ のプログラム内にインタプリタを埋め込むこともできます. 機能拡張言語を自分で実装する代わりに,Python をとりこんでプログラミングできるようにするというわけです. もっとお手軽に, Windows や Unix-like システムの共有ライブラリをラップするのも可能です. ただ拡張するだけでなく,自作の拡張を配布したり,インストールしたりする作業を助けるツールもあります.
  • #7: もうちょっと宣伝させてください. Pythonではクロスプラットフォームな GUI を書けます.標準でついてくる Tk はもちろん, wxWidgets や Qt に対するバインドがあって, 国際化もできます. 科学や工学分野向けのネイティブコードで書かれたライブラリを多くラップしているのも強みです.数値計算,機械学習,robotics, バイオインフォマティクス 自然言語処理など,いろいろあります. 画像処理や可視化ライブラリもあります.PDFやOpenGL,cg のバインドもあります. スクリプトを実行形式にパッケージ化して配るようなツールもあって, Unix , win32, macosx などに対応しています.
  • #8: そんなに便利なのになんで誰も使ってないんだと思われるかもしれませんが,ちゃんと使われています. 例えば機能拡張言語として埋め込まれているもの,アプリケーションのコアとなっているもの, 最近では携帯電話のプログラミング言語候補としても注目されているようです. いくつか実装があって,例えば Java 実装である Jython は,java のライブラリを通常のモジュールのように import して, java コードを一行も書かずにバイトコードを生成できたりします.
  • #9: さて,宣伝はここまでにして,Update に移りたいと思います. 最近ではPython にはドラスティックな変更がないので,そうたくさんはありません.
  • #10: 最初に公開されたPythonバージョンは 1991 年の09 で,それ以後 Unicode , List の内包表記,演算子,イテレータ,ジェネレータと少しづつ 機能が追加されてきています.最近はジェネレータ,Bool型などの追加された 2.3 ,がメインストリームで,現在αステートの 2.4 では 10 進数算術や関数修飾子などが追加される予定です.それ以後は 3.0 までの間はパフォーマンス向上などが目的で, 3.0 以後に大々的な 変更を予定しているそうです. 一方,Jython は Python に追従する形で開発が進められています.現在の最新版はこのようになっています.
  • #11: 2.3系列では,ジェネレータが追加されました.yield を使った関数を定義すると,呼び出すたびに次に yield にぶつかるか,関数から抜けるまで 値を返してそのときの状態を保存します.フィボナッチ数列をこんな具合にかける訳です. それから,論理値を表すブール型と集合を現すSet型が加わり,抽象的なデータ操作が便利になってきました. その他,ソースコードのエンコードを認識したり,改行を柔軟に扱えるような変更が行われています.
  • #12: 後はインデクスループを書きやすくするための工夫ですとか,csv を扱いやすくしたりするモジュールが追加されています. 現在のバージョンは 2.3.4 で,バグフィクスリリースです.
  • #14: まだ未確定の機能として,関数修飾子と複数行の import 文があります. 関数修飾子は,これまで組み込み関数で静的メソッドなどを作成していたのですが,もっとわかりやすくきれいにかけるようにしよう. ただ残念ながら個人的には きれい とは思いません.コミュニティも反対していて,いまちょっと紛糾している状態です. ただ何か入るべきということで, 2.4a2 から取り入れられています.
  • #15: サードパーティモジュールでの大きな変化としては,Numeric の開発が止まって numarray に移行したことが上げられます. 結構多くのライブラリが Numeric に依存していて今移行期です. それから,和文で読めるドキュメントが増えたことを今年は特に強調したいと思います. 標準ドキュメントの和訳が今年一応の訳了をみて,成果物を sourceforge でリリースしています. その他にも様々なドキュメントの和訳が出ています.あと,オライリーさんから出ている非常によくまとまったリファレンスの 和訳が出版されています.