2系を使いながらも3系のノリでコーディングする方法!!




takkun
どうも!たっくんです!

Mayaを始め多くのCGソフトでサポートされているPythonのバージョン2系のサポートが2020年までらしいです(´・ω・`)

後2年ちょい。。。

サポート終了しても2系のバージョンなのかわかりませんが、すこしは3系を意識しておいて準備しておきたいですよね!

そこで!

__future__モジュール」を使って、2系を使いながらも3系のノリでコーディングしてみませんか!?

__future__モジュールって?

__future__ モジュールは Python 2系用のモジュールです。デフォルトで入っているので別途インストールなどは必要ありません(*´ω`*)b

Python 3系に実装された互換性の無い機能を、Python 2系で使用できるようにしてくれます!ステキング!

print_function

Python 3系では「print」は、文から関数になって、予約語からも削除されました!

具体的にどう変わるかっというと、、、「print “Message”」を「print(“Message”)」と書かないといけないようになりました(;´∀`)

これをPython 2系でやるには、以下のようにします∠( ゚д゚)/

from __future__ import print_function
print("Message")

unicode_literals

Python 2系では、文字列の型が「str」と「unicode」があって日本語などがあるとややこしかったのですが、Python 3系では基本的に「unicode」として扱うようになりました!

from __future__ import unicode_literals
message = "メッセージ"
print(type(message))
# type 'unicode'

division

Python 2系では、int同士の割り算は小数点以下切り捨てでしたが、Python 3系では自動でfloatになるほうになりました。(逆に今まで通りにしたい場合は、演算子「//」 を使います)

from __future__ import division
print(1/2)
# 0.5
print(1//2)
# 0

absolute_import

Python 2系では、importはカレントディレクトリのモジュールが優先されていましたが、Python 3系では、相対インポートではなく絶対インポート優先になります。これを使うことで、標準モジュールをいつのまにか上書きしてしまう可能性を防げるようになります!

from __future__ import absolute_import

オススメの設定

各モジュールの冒頭で、以下のモジュールをimportしておくとCGソフトで多く使われているPython 2.7でPython 3系を意識してコーディングできると思います!(`・ω・´)ゞ

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division