LoginSignup
1
0

More than 1 year has passed since last update.

Python初学者が体感したPython 2系と3系の違い

Last updated at Posted at 2022-12-08

はじめに

本記事はProgaku Advent Calendar 2022 9日目担当です。
今まで個人開発でPython3系を触ってきましたが、
とってもレガシーなPython2系のシステムも触る機会ができてしまったので、
Python2系と3系の違いを備忘録としてまとめていきます。
(3系のコードの説明は省略しています。)

検証したpythonバージョンは以下です。
2系=2.7.18
3系=3.11.0

対象読者

python 3系の勉強して現場に入ったら、2系のシステムも触ることになった方(筆者を含む)

Unicodeの文字列の扱い

Unicode(日本語などのマルチバイト文字)は、u'文字列'と記載しないと文字化けする。

(3系)print関数→(2系)print文

python 2系ではprint関数はなく、print文として扱う。
また、複数のprintを実行して、結果を改行しない場合は、末尾にカンマを入れる。

test.py
print u'2系です。',
print u'2系です。'
実行結果
2系です。2系です。

(3系)input関数→(2系)raw_input関数

処理の中で標準入力を受け取りたい時、Python2系ではraw_input関数を使う。

test.py
raw_input(u'お名前を入力してください:')
実行結果
お名前を入力してください: 

(3系)range関数→(2系)xrange関数も使おう

range関数は2系と3系ではリスト生成の仕方が異なる。
2系のrange関数は、引数がどれだけ大きくても、一気にリストを生成してしまい、処理が重くなる。
xrange関数を使用すると、使うリストの分だけ随時生成されるので、引数が大きい場合はxrangeを使用する。

補足:3系ではrange関数が2系のxrange関数に似た仕組みで動いてるので、range関数一択で問題ないそう。

整数同士の計算の出力

整数同士の計算だと、演算結果も整数で出力され、小数点切り捨てられる。

test.py
num = 5 / 2
print num

num = 5 / 2.0
print num
実行結果
2
2.5

例外処理の書き方

例外処理の内容を変数に格納する場合、asではなくカンマ区切りで記載する。

test.py
except ValueError, err:
   print err

まとめ

初学者(筆者)が気づいて理解している範囲なので、これは氷山の一角だと思います。
3系だけに慣れたいものですね...

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0