Tags:
Python

หลังจากพัฒนากันมาอย่างยาวนาน 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

Comments

By: ZetaSolid
Windows PhoneSymbianUbuntuWindows
ZetaSolid's blog
on 04/12/08 17:49 #74313 toggle
ZetaSolid's picture

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

By: 0xffeeddaa
0xffeeddaa's blog
on 04/12/08 18:05 #74316 toggle
0xffeeddaa's picture

โอ้ว มาซะที

By: bow_der_kleine
WriterAndroidUbuntu
bow_der_kleine's blog
on 04/12/08 18:45 #74320 toggle
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

By: khajochi
WriteriPhoneIn Love
khajochi's blog
on 04/12/08 20:37 #74339 toggle
khajochi's picture

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

---
Khajochi Blog : It's not a Bug ... It's a Feature


แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com

By: bossalove
bossalove's blog
on 04/12/08 21:28 #74341 toggle
bossalove's picture

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

By: cardcaptor
cardcaptor's blog
on 04/12/08 21:51 #74344 Reply to:74341 toggle
cardcaptor's picture

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

By: bow_der_kleine
WriterAndroidUbuntu
bow_der_kleine's blog
on 04/12/08 22:35 #74347 Reply to:74341 toggle
bow_der_kleine's picture

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

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

BioLawCom.De

By: sugree
FounderWriterAndroidBlackberry
sugree's blog
on 04/12/08 21:33 #74342 toggle
sugree's picture

ตรงเวลา?

By: bow_der_kleine
WriterAndroidUbuntu
bow_der_kleine's blog
on 04/12/08 22:29 #74346 Reply to:74342 toggle
By: Solotov
Solotov's blog
on 05/12/08 1:09 #74362 toggle
Solotov's picture

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

By: cwt
AndroidRed Hat
cwt's blog
on 05/12/08 1:15 #74364 Reply to:74362 toggle
cwt's picture

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

By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 05/12/08 1:26 #74365 Reply to:74362 toggle
lew's picture

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

LewCPE


LewCPE's Google+

By: Solotov
Solotov's blog
on 05/12/08 8:45 #74387 Reply to:74362 toggle
Solotov's picture

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

By: sirn
WriteriPhone
sirn's blog
on 05/12/08 3:54 #74372 toggle
sirn's picture

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

By: orbitalz
Windows PhoneAndroidWindows
orbitalz's blog
on 05/12/08 11:43 #74422 Reply to:74372 toggle
orbitalz's picture

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

By: veer
Android
veer's blog
on 05/12/08 15:46 #74460 toggle
veer's picture

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