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<br/> ใหม่: print("The answer is", 22)

เดิม: print x<br/> ใหม่: 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
SymbianUbuntu
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


XimpleSoft

By: khajochi
WriteriPhone
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


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

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


XimpleSoft

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
iPhoneAndroid
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
FounderAndroidSymbian
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 PhoneAndroid
orbitalz's blog
on 05/12/08 11:43 #74422 Reply to:74372 toggle
orbitalz's picture

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

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

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