Tags:
Node Thumbnail

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

Get latest news from Blognone

Comments

By: ZetaSolid
Windows PhoneSymbianUbuntuWindows
on 4 December 2008 - 17:49 #74313
ZetaSolid's picture

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

By: 0xffeeddaa on 4 December 2008 - 18:05 #74316

โอ้ว มาซะที

By: bow_der_kleine
WriterAndroidUbuntu
on 4 December 2008 - 18:45 #74320
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
on 4 December 2008 - 20:37 #74339
khajochi's picture

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

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


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

By: bossalove
iPhone
on 4 December 2008 - 21:28 #74341

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

By: cardcaptor on 4 December 2008 - 21:51 #74344 Reply to:74341

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

By: bow_der_kleine
WriterAndroidUbuntu
on 4 December 2008 - 22:35 #74347 Reply to:74341
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
on 4 December 2008 - 21:33 #74342

ตรงเวลา?

By: bow_der_kleine
WriterAndroidUbuntu
on 4 December 2008 - 22:29 #74346 Reply to:74342
By: Solotov on 5 December 2008 - 01:09 #74362

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

By: cwt
AndroidRed Hat
on 5 December 2008 - 01:15 #74364 Reply to:74362

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

By: lew
FounderJusci&#039;s WriterMEconomicsAndroid
on 5 December 2008 - 01:26 #74365 Reply to:74362
lew's picture

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

LewCPE


lewcpe.com, @wasonliw

By: Solotov on 5 December 2008 - 08:45 #74387 Reply to:74362

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

By: sirn
WriteriPhone
on 5 December 2008 - 03:54 #74372

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

By: orbitalz
ContributorWindows PhoneAndroidUbuntu
on 5 December 2008 - 11:43 #74422 Reply to:74372

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

By: veer
Windows PhoneUbuntu
on 5 December 2008 - 15:46 #74460
veer's picture

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