Python 3.0

tags:

หลังจากพัฒนากันมาอย่างยาวนาน Python 3.0 หรือที่รู้จักกันในชื่อ Python 3000 ก็เสร็จสมบูรณ์แล้ว

Guido van Rossum ผู้สร้างภาษา Python บอกว่า Python 3.0 นี้จงใจพัฒนาให้ “เข้ากันไม่ได้” (incompatible) กับเวอร์ชันก่อน (2.6 และสาย 2.x) ด้วยเหตุผลด้านโครงสร้างของภาษา รายการเปลี่ยนแปลงแบบคร่าวๆ มีดังนี้

  • ที่ชัดเจนมากคือเปลี่ยน print จากเดิมเป็น statement กลายมาเป็นฟังก์ชัน

เดิม: print “The answer is”, 22
ใหม่: print(“The answer is”, 2
2)

เดิม: print x
ใหม่: print (x)

  • เปลี่ยนชนิดของตัวแปรที่คืนค่าออกมาในบางกรณี จากเดิมใช้ list เปลี่ยนมาเป็น view หรือ iterator แทน
  • ปรับค่าของการเปรียบเทียบ comparison operators (<, <=, >=, >) ในบางกรณีจะคืนค่า TypeError จากเดิมที่คืน False
  • เปลี่ยนชื่อตัวแปรชนิด long เป็น int ดังนั้นจะเหลือตัวแปรชนิดจำนวนเพียงอย่างเดียวคือ int
  • ปรับปรุงวิธีการเก็บข้อมูลของตัวแปรชนิดข้อความขนานใหญ่ เปลี่ยนมาใช้ Unicode ทั้งหมด ตัวแปรที่เก็บข้อความใช้ str ส่วนตัวแปรที่เก็บข้อมูล (data) คือ bytes และเอาสองชนิดนี้มาผสมกันไม่ได้ (เวอร์ชันก่อนทำได้) ต้องสั่ง encode/decode ก่อนเสมอ
  • ไม่สามารถใช้ u”….” เพื่อให้เข้ารหัสข้อมูลเป็น Unicode ได้อีกแล้ว
  • as กับ with กลายเป็นคำสงวน
  • เลิกใช้ <> สำหรับ “ไม่เท่ากับ”​ ต่อไปจะใชช้ != เพียงอย่างเดียว
  • อย่างอื่นๆ ดูใน What’s New in Python 3.0 ละเอียดมาก

การทดสอบเบื้องต้นของทีมพัฒนา Python เองพบว่า Python 3.0 ทำงานได้ช้ากว่า Python 2.5 อยู่ประมาณ 10% โดยเฉลี่ย ซึ่งเป็นเพราะตัวโครงสร้างภาษามีการเปลี่ยนแปลงค่อนข้างเยอะ และเรื่องประสิทธิภาพจะค่อยๆ ถูกแก้ไขใน Python 3.x รุ่นถัดๆ ไปในอนาคต

ส่วนคำแนะนำสำหรับคนที่ต้องการพอร์ตโค้ดเดิมมาเป็น Python 3.0 คือให้พอร์ตจาก 2.x รุ่นใดก็ตามให้ทำงานบน 2.6 ให้ได้ก่อน และใช้เครื่องมือที่มีให้อย่าง “2to3” ช่วยแปลงโค้ด

ตอนนี้ Python 3.0 มีให้ดาวน์โหลดแล้วบนลินุกซ์ (เป็นซอร์สโค้ดไปคอมไพล์เอง) และวินโดวส์ (ติดตั้งได้เลย)​ ทั้งแบบ 32 และ 64 บิต ส่วนเวอร์ชันของดิสโทรก็ต้องรอกันหน่อยตามสูตรครับ อีกไม่นานคงมีพวก PPA ออกมาสำหรับ Ubuntu

ที่มา - Python 3.0 Release

ZetaSolid's picture

แก้โค้ดกันหน้ามืด หุๆ

0xffeeddaa's picture

โอ้ว มาซะที

bow_der_kleine's picture

อีกอย่างที่แก้เยอะคือ dictionary ครับ

ตอนนี้ Ubuntu มีแพกเกจ python-3.0 ซึ่งยังเป็นรุ่น rc1 อยู่ คงต้องรออีกสักหน่อย ถึงจะออกรุ่นตัวจริง

เคยเข้าไปอ่านในบล็อกของ Guido van Rossum ครับ เขาบอกว่าไม่ควรเอา 3.0 ไปใช้ในงานดับ production ควรรอ 3.1 หรือ 3.2 ดีกว่า ในระหว่างนี้ให้ใช้ 2.6 ไปก่อน เพราะมันคอยเตือนว่าตรงไหนควรแก้ให้เข้ากันได้กับ 3.x

โดยส่วนตัว ผมจะย้ายก็ต่อเมื่อโมดูลที่ใช้อยู่ย้ายไปอยู่ 3.x จนครบก่อน

BioLawCom.De

msmart's picture

อืม .. ไม่ compatible กับรุ่นเดิมแถมช้าขึ้นอีก .. ต้องคิดหนักขึ้นหน่อยเวลาจะเอามาใช้แล้วเนี่ย

—-
Khajochi Blog : It’s not a Bug … It’s a Feature

bossalove's picture

เพิ่งอ่าน tutorial ภาษา python แล้วก็ลง 2.6 ไปเมื่อวานนี้เอง สิ่งที่เพิ่งอ่านกำลังจะถูกโละ -___-“

cardcaptor's picture

ดีแล้วครับ ดีกว่าคนที่เขียน code สำหรับ 2.6 มาแล้วต้องมานั่ง port

bow_der_kleine's picture

ไม่ต้องโละครับ เพราะมันก็ยังเป็น Python เหมือนเดิม syntax กับ module เหมือนเดิมเกือบหมด incompatible ไม่ได้หมายความว่าต้องเขียนโค้ดใหม่หมด แต่ต้องตรวจสอบโค้ดใหม่หมด เท่าที่เคยลอง ผมต้องแก้โค้ดไม่ถึง 5% เพราะไม่ค่อยได้ใช้จุดที่เขาเปลี่ยน

อีกอย่าง 2.6 กับ 3.0 มันก็เกือบ ๆ จะ compatible กันด้วยครับ เพราะ 2.6 ทำมาเพื่อรองรับการก้าวข้ามจาก 2.x เป็น 3.x

BioLawCom.De

sugree's picture

ตรงเวลา?

bow_der_kleine's picture
Solotov's picture

แล้วผมมีหนังสือ Beginning python ของ Apress อยู่(edition แรก) version python ในหนังสือก็ 2.4 ยังงี้นี่ยังไงดีครับ ยังพออ่านตามหนังสือได้ไหมครับ.. หรือทิ้งเลย..

cwt's picture

อ่านได้ครับ ตาม concept แล้วยังเหมือนกันครับ กว่า 3.1 3.2 จะออกมาก็อีกซักพักใหญ่ๆ ครับ เขียนแบบ 2.4 ไปก่อนแล้วลองเอาไป run ใน 2.6 ดูว่ามันฟ้องอะไรตรงไหนครับก็ค่อยไปแก้ตรงนั้น

lew's picture

กว่าที่ซอฟต์แวร์โอเพนซอร์สจะย้ายตัวเองไปใช้ Python 3 กันเยอะๆ น่าจะหลักปีเหมือนกันครับ ไม่ต้องรีบมาก


LewCPE

Solotov's picture

ขอบคุณครับ ค่อยโล่งใจหน่อย :)

sirn's picture

เหมือนช่วง Perl 4 ย้ายไป Perl 5

orbitalz's picture

สมัยนี้มีใครยังใช้ perl บ้างเนี่ยะ เป็นภาษาแรกของผมเลยนะนั่น

veer's picture

ดูหน้าเขียนขึ้นอีกมาก … แต่ขี้เกียจ port code เก่ามากมายเหมือนกัน แต่ก็คงคุ้มล่ะ ไม่ได้เปลี่ยนกันบ่อยๆ

Site Search

 
Web blognone.com

Poll

User login