8 พฤศจิกายน 2558

Published พฤศจิกายน 08, 2558 by with 0 comment

แปลงโค้ดไพทอนไฟล์เดียวใช้ได้ทั้ง Python 2 และ Python 3 ด้วย python-modernize

ในบทความที่ผ่าน ๆ มาผมได้แนะนำโมดูลสำหรับใช้เขียนโค้ดไพทอนใช้ได้ทั้ง Python 2 และ Python 3 คือ โมดูล six และมีโมดูล 2to3 ที่ช่วยให้แปลงโค้ด Python 2 ให้รันใน Python 3 ได้เหมือนกันครับ

ผมขอแนะนำโมดูล python-modernize เป็นโมดูลที่ช่วยแปลงโค้ดให้ใช้งานได้ทั้ง Python 2 และ Python 3 โดยใช้โมดูล six และโมดูล 2to3 เข้ามาใช้งานร่วมด้วย ใช้งานได้ทั้ง Python 2 และ Python 3

สามารถติดตั้งได้โดยใช้คำสั่ง pip (ต้องติดตั้ง git ก่อนใช้งานคำสั่งนี้) :
pip install git+https://github.com/mitsuhiko/python-modernize.git

โมดูลในบทความนี้แปลงได้เฉพาะไวยากรณ์ของ Python 2 และ Python 3 และแปลงได้เฉพาะไลบรารีที่เป็นไลบรารีมาตรฐานของภาษาไพทอนเท่านั้น

การใช้งาน
ผมมีไฟล์โค้ด Python 2 ชื่อ hello.py โดยมีโค้ดดังนี้

[python]
name = raw_input("Your name : ")
print "Hi "+name
x = input("Num : ")

for x in xrange(3):
print x
else:
print 'Final x = %d' % (x)
[/python]

เปิดคอมมานด์ไลน์ขึ้นมา ใช้คำสั่ง
python-modernize -w hello.py

-w คือ ทำการบันทึกไฟล์ที่แปลงทับไฟล์เดิม และสำรองไฟล์โค้ดเก่าไว้
คำสั่งนี้มีการใช้งานคล้าย ๆ กับคำสั่งของ 2to3 สามารถใช้ไวยากรณ์ของ 2to3 ได้เลยครับ
อ่านเพิ่มเติม แปลงโค้ด Python ด้วย 2to3

เมื่อทำการแปลงโค้ด hello.py

ผลลัพธ์โค้ด hello.py

[python]
from __future__ import print_function
from __future__ import absolute_import
from six.moves import range
from six.moves import input
name = input("Your name : ")
print("Hi "+name)
x = eval(input("Num : "))

for x in range(3):
print(x)
else:
print('Final x = %d' % (x))
[/python]

โค้ดนี้สามารถใช้งานได้ทั้ง Python 2.6 + และ Python 3.2 + แต่ต้องทำการติดตั้งโมดูล six และโมดูล python-future ให้เรียบร้อยก่อนรันโค้ดครับ

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)