【レビュー】
登場! Python 3.0 - 2系との違いを比較
1 print命令からprint関数へ変更
2009/01/01
2008年12月3日(オランダ時間)、プログラミング言語Pythonの最新版となるPython 3.0が公開された。3.0は意図的に後方互換性が失われた初のバージョン。これまでのリリースよりも多くの変更が実施されており、すべてのPythonユーザに影響がある。しかし言語仕様が大幅に変更されたわけではない。これまで問題視されていた部分が変更されたといったもので、以前のバージョンよりも言語としての一貫性は向上している。以降で2系と3系の違いで特に注目されるポイントをかいつまんで紹介する。
|
|
Python Programming Language |
最も目につく変更はprint命令がprint関数へ変更されたことだ。3.0ではprint命令は提供されていない。出力するにはprint関数を使う必要がある。表記方法が関数の文法に変わっているほか、ソフトスペース機能もなくなっている。次にPython 2.5で動作する表記と3.0の表記例を示す。
リスト1 print命令 - Python 2.5
#!/usr/bin/env python2.5
import sys
# 1. common print style
print "1 + 1 = ", 1+1
# 2. newline
print "not new line",
print
# 3. stderr
print >>sys.stderr, "fatal error"
# 4. brancket
print (10, 20)
リスト2 print関数 - Python 3.0
#!/usr/bin/env python3.0
import sys
# 1. common print style
print("1 + 1 = ", 1+1)
# 2. newline
print("not new line", end=" ")
print()
# 3. stderr
print("fatal error", file=sys.stderr)
# 4. brancket
print ((10, 20))
プロンプト1 print関数の実行結果
% ./print30.py
1 + 1 = 2
not new line
fatal error
(10, 20)
%
主な違いは次のとおり。
- 命令から関数に変更されたため、引数を括弧 ( ) で囲む必要がある
- 従来は末尾に「,」をつけることで改行を抑制していたが、関数の文法に従って「 end=" "」を指定する必要がある
- 標準エラー出力への指定も従来の「>>sys.stderr」から、関数の文法に従い「 file=sys.stderr」を指定する必要がある
- 従来の表記では括弧そのものが表示されていたケースでも、新しい表記では明示的に括弧を表記する必要がある
よく使う命令だっただけにこの変更はユーザに印象強く残るが、それほど心配する変更ではない。移行用の2to3スクリプトを使うことでprint命令を自動的にprint関数に置き換えることが可能だし、関数になったことでプログラミング言語としての一貫性が向上して従来よりもすっきりしているからだ。なれてしまえば違和感を抱くこともない。
ヘッドライン
- 富士通、集中冷却方式を採用した高密度サーバ製品を販売開始[09:00 3/18]サーバとストレージ
- RSA、情報漏洩対策ソリューション「RSA Data Loss Prevention」を発表[08:00 3/18]セキュリティ
- 【連載】佐々木正悟×堀E正岳 ライフハック・トーク 第32回 Evernoteでデジタルに記憶する[07:30 3/18]SE力
- 京大ら、宇宙天気予報の基礎となる太陽嵐のモデリングに成功[20:09 3/17]サイエンス
- IBMら、環境的に持続可能な新しいプラスチックに向けた研究成果を発表[19:40 3/17]サイエンス
- 東北大、従来比で桁違いに特性の優れたCNT-TFTの作製方法を開発[19:09 3/17]エレクトロニクス
- CSR、Androidスマートフォン開発用ソフトプラットフォームを発表[18:06 3/17]エレクトロニクス
- Cプログラムをデバッグする基本的な方法[17:37 3/17]プログラミング
- Avnet、DSP設計向け「Virtex-6 FPGA DSP開発キット」を発表[17:32 3/17]エレクトロニクス
- Intel、32nmプロセス採用サーバ向けプロセッサ「Xeon 5600番台」を発表[17:03 3/17]エレクトロニクス






