ลักษณะอย่างหนึ่งใน python คือ battery included ที่มีไลบรารีมาให้ใช้เยอะมาก แต่ด้วยความที่เราไม่เคยพออยู่แล้ว ผมเลยชวนชาวเรามาแนะนำกันดีกว่าครับ ว่าเรามีไลบรารีอะไรที่น่าสนใจกันบ้าง ที่เพื่อนๆ เราอาจจะเอาไปใช้อย่างอื่นกันได้ด้วย
ผมเริ่มก่อนกับ Jinja2 ที่เป็น Template Engine ที่มีแนวคิดง่ายมาก คือเลียนแบบการทำงานระบบ Template ของ Django มาเลยตรงๆ (ต่างกันในรายละเอียด) แต่สามารถใช้งานแยกได้อย่างอิสระ ทุกวันนี้ผมใช้มันสร้างสคริปต์ TCL เพื่อเอาไปทำงานวิจัยอยู่
ตัวที่ใช้่บ่อยๆ ครับ (ทั้งหมด easy_install ได้ครับ) Web.py ตัวนี้เป็น Web framework ที่ค่อนข้างไม่เกะกะครับ (คือเขียนตามแบบที่เราเขียน ไม่ใช่เขียนตามที่เค้ากำหนดไว้อย่างพวก Django, TG ครับ) แต่ส่วนอื่นๆนอกจาก Web framework (เช่น Templator) ยังไม่ค่อยดีครับ tenjin ตัวนี้เป็น template engine ที่ค่อนข้างจะำไม่เกะกะอีกครับ คือใช้ Python syntax เอาได้เลย ประมาณ PHP นั่นแหละครับ
<?py for i in arr: ?> ${i} <?py # ?>
(ใส่ # เพื่อบอกเขตหยุด indent ครับ) SQLObject เป็น ORM ครับ ไว้เรียก DB ง่ายๆ ถ้าใช้ advance ผมจะไปเรียก connection มันแล้ว queryOne ตรงๆครับส่วนตัวผมชอบ Mechanize ครับ เอาไว้เขียน script automate เล็กๆ น้อยๆ หลายอย่าง มันจัดการเรื่อง redirect กับ cookie อะไรต่างๆ ให้หมด สะดวกดี
Yume Nikki
ที่ผมใช้ก็มี
XLRD ไว้สำหรับอ่านข้อมูลใน ms excel
pyExcelerator ไว้สำหรับสร้างไฟล์ ms excel
pyodbc ไว้สำหรับติดต่อกับ odbc
pymssql ไว้สำหรับติดต่อกับ MS SQL
mechanize ไว้สำหรับไต่ไปตามเว็บเืพื่อเก็บข้อมูลคับ
pyftpdlib ไว้สำหรับทำ ftp server คับ
cx_Oracle ไว้สำหรับติดต่อกับ oracle คับ
นอกนั้นก็ใช้พวกพื้นฐานครับ เช่น wxPython,win32,pymysql ฯลฯ แต่ไม่ค่อยได้ใช้ฝั่งของเว็บซักเท่าไหร่เพราะทำเว็บก็ใช้ PHP เหมือนเดิม
numpy ใช้ python คำนวนแบบ numeric scipy ไลบรารี่ ทางคณิตศาสตร์ต่าง ๆ matplotlib ไลบรารี่สำหรับพลอทกราฟ pyro Remote Object สำหรับ distributed computing ipython Python Interpreter แบบเพิ่มความสามารถ PIL Image Processing สำหรับ Python
etc...
แต่โดยปกติแล้ว built in module ก็ครอบคลุมการใช้งานของผมเกือบครบเหมือนกัน เคยเปิดเอกสารดู โอ... มันเยอะจริง ๆ บางโมดูลจนถึงตอนนี้ผมยังไม่เคยใช้เลย แต่สิ่งที่ผมชอบมากกว่าไลบรารี่ปริมาณมาก ๆ คือ ไลบรารี่ส่วนมากใช้งานง่ายมาก
BioLawCom.De
โมดูลที่ผมพยายามใช้แล้วพบว่ามันแย่มากคือ datetime ครับ พยายามหาทางบอกว่าวันที่ระบุอยู่ในหนึ่งเดือนก่อนหน้านี้หรือไม่นี่อ่านแล้วงงแล้วงงอีก
LewCPE
lewcpe.com, @wasonliw
เข้าใจเลย
เคยเจอเหมือนกัน =='
ป.ล. แต่ส่วนตัวผมก็คิดว่าโมดูลต่างๆมันเข้าใจง่าย กว่าหลายๆภาษานะครับ
psyco เวลาต้องการคำตอบไวๆแต่ไม่อยากเขียนใหม่
PoomK
อธิบายเกี่ยวกับ psyco หน่อยซิครับ
ลืมเขียนอธิบายไปเลยแฮะ ขอบคุณครับ
psyco มันทำงานคล้ายๆกับเป็น Just-In-Time compiler ให้กับโปรแกรม Python ครับ ทำให้โปรแกรมทำงานได้ไวขึ้นมากโดยไม่ต้องแก้ไขโค้ดแต่อย่างใด โดยมีข้อเสียคืดใช้แรมเพิ่มมากขึ้นนิดหน่อย
เวลาเขียนโปรแกรมบางโปรแกรมที่มันซับซ้อนแล้วใช้เวลาคำนวนมากๆ แต่ไม่มีเวลาออกแบบเพียงพอ (เช่นต้องส่งงานพรุ่งนี้) ผมมักจะรีบๆเขียนมันขึ้นมาแล้วใช้ psyco ช่วย optimised ส่วนที่เขียนไปไม่ค่อยดี เช่นตรงไหนเป็น list ทั้งๆที่ไม่ควรเป็น ตรงไหน ตัวแปรไหนมีการใช้งานเป็น integer มากๆก็จะมีการสร้างโค้ดเฉพาะขึ้นมาซึ่งเร็วกว่าเดิม
PoomK
ขอบคุณคับ แต่ยังไม่ค่อยเห็นภาพ เดี่ยวขอไปศึกษาเพิ่มก่อนคับ
แล้วงัยจะมาถามเพิ่มคับ พอดีน่าสนใจ(แบบว่าที่บริษัท ชอบขายผ้าเอาหน้ารอดนะคับ)
antlr ไม่รู้ว่านับเป็น library ได้หรือเปล่า? แต่มันก็มีส่วนที่เป็น library มั้งนิดนึง. ที่เหลือก็เป็นพวกเกี่ยวเนื่องกับ pylons ทั้งหลาย.
มีตัวไหนทำงานกับ pdf ได้มั่งไหมครับ
ตัวนี้งัย reportlab แต่ผมก็ยังไม่เคยใช้นะครับ
ว่าจะว่าจะ หลายครังแต่ยังไม่เคยซักทีคับ งัยก็บอกกันบ้างนะครับ