Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. Best Practice: แก้โมดูล Python แล้ว Reload ทดสอบทันที

    แก้โค้ดโมดูล แล้วอยากทดสอบใน Interactive Shell ทันที ไม่ต้อง Restart Shell ใช้ reload() Python 2 >>> import mymodule >>> # แก้ไข mymodule.py >>> reload(mymodule) Python 3 (ย้ายไปอยู่ใน imp แล้ว Deprecated ใช้ importlib แทน) >>> import importlib >>> imp

  2. ปิด Log จากโมดูล Requests ใน Python

    โมดูล requests ใช้ Logging ภายใน สามารถปิด/ลดระดับได้ผ่าน logging ตัวอย่าง: แสดงแค่ WARNING import logging logging.getLogger(requests).setLevel(logging.WARNING) ระดับที่ใช้ได้ logging.WARNING (ค่าเริ่มต้นของ Requests มักเป็น INFO) logging.ERROR logging.CRITICAL ปิดการ Log ของ Urllib3 (Dependen

  3. ปิด Log จากโมดูลที่ Import ใน Python

    ใช้โมดูล logging ตั้งระดับ (Level) ให้ Logger ของโมดูลนั้น ตัวอย่าง: แสดงแค่ WARNING ขึ้นไป import logging logging.getLogger(imported_module).setLevel(logging.WARNING) ระดับ Log (จากน้อยไปมาก) DEBUG INFO WARNING ERROR CRITICAL ใช้ __name__ แทน String Hardcode import imported_module logging.get

  4. ใช้โมดูล Python ผ่าน Paramiko (SSH)

    SSH ให้แค่ Remote Shell ไม่สามารถเรียกฟังก์ชัน/โมดูล Python บนเครื่อง Remote ได้โดยตรง วิธีแก้: รันสคริปต์บน Remote แล้วอ่านผลลัพธ์ เขียนสคริปต์ Python บนเครื่อง Remote ใช้ Paramiko Exec Command เรียกสคริปต์นั้น อ่านผลจาก stdout หรือเขียนไฟล์แล้วอ่านไฟล์กลับ ตัวอย่างแนวคิด import paramiko ssh =

  5. Variable Scope ใน Python Modules (กฎ LEGB)

    Scope (ขอบเขต) ใน Python ควบคุมโดย Namespace ตัวแปรถูกค้นหาตามลำดับ LEGB Rule: L - Local: ตัวแปรที่กำหนดในฟังก์ชัน/แลมบ์ดา (ไม่ได้ประกาศ global) E - Enclosing: ตัวแปรในฟังก์ชันภายนอกที่ห่อหุ้ม (Nested Functions) เรียกจากในออกไป G - Global (Module): ตัวแปรระดับบนสุดของโมดูล หรือที่ประกาศ global ในฟ

  6. Import โมดูล Python โดยไม่ต้องติดตั้ง (No Install)

    เมื่อไม่มีสิทธิ์ติดตั้งแพ็กเกจระบบ (No Root/Admin) มี 2 ทางหลัก: วิธีที่ 1: เพิ่ม Path ผ่าน sys.path >>> import os, sys >>> file_path = AdditionalModules/ >>> sys.path.append(os.path.dirname(file_path)) # ตอนนี้ Python จะหาโมดูลใน AdditionalModules/ ด้วย วางโมดูล (โฟลเด

  7. คัดลอกโมดูล Python ระหว่างเครื่อง (Best Practice)

    หากเป็นโมดูลตัวเอง → คัดลอกไฟล์ .py ไปรันได้เลย (ต้องมี Python ติดตั้ง) หากเป็นแพ็กเกจที่ติดตั้งผ่าน pip (Third-party) วิธีที่ดีที่สุด: ใช้ pip freeze สร้างรายการ แล้วติดตั้งใหม่บนเครื่องปลายทาง เครื่องต้นทาง installed_modules.txt เครื่องปลายทาง $ pip install -r installed_modules.txt ทำไมไม่ค

  8. ใช้โมดูล Python ใน Octave (Matlab Clone)

    ไม่มีวิธีตรงไปตรงมา (No Direct Binding) แต่สามารถรันสคริปต์ Python แล้วอ่าน Output กลับมาได้ ใช้คำสั่ง system() output = system(python /path/to/your/python/script.py, 1) อาร์กิวเมนต์ที่ 2 เป็น 1 → คืนค่า Output เป็น String ไม่ใส่ → พิมพ์ Output ตรงหน้าจอ (ผ่าน Pager) แนวทางปฏิบัติ เขียนสคริปต์

  9. ห้ามไม่ให้โมดูล Python เรียกโมดูลอื่น (Sandboxing)

    ใช้เทคนิค Sandboxed Python หรือ Restricted Execution เพื่อจำกัดสิทธิ์การทำงาน สิ่งที่ควบคุมได้ อนุญาต/ห้าม Import โมดูลเฉพาะ จำกัดเวลารัน (Execution Time Slices) บล็อก/อนุญาต Network Access จำกัดการเข้าถึง Filesystem (Chroot) วิธีการ Implement แก้ CPython Runtime - ยาก สำหรับผู้เชี่ยวชาญ ใช้ Ru

  10. โมดูลมาตรฐาน Python ที่น่าสนใจและใช้บ่อย

    โมดูลใน Standard Library ที่มีประโยชน์สูงและนิยมใช้งาน: โมดูลหน้าที่หลัก mathคณิตศาสตร์พื้นฐานและขั้นสูง reRegular Expression จัดการข้อความ datetimeจัดการวันที่ เวลา jsonเข้ารหัส/ถอดรหัส JSON randomสุ่มตัวเลขและข้อมูล osโต้ตอบกับระบบปฏิบัติการ copyDeep/Shallow Copy อ็อบเจกต์ sqlite3ฐานข้อมูล SQ

  11. ตรวจสอบว่าโมดูล Python มีอยู่จริงหรือไม่ (โดยไม่ Import)

    มีหลายวิธีตรวจสอบว่าโมดูลสามารถ Import ได้หรือไม่ โดยไม่ต้อง Import จริง วิธีที่ 1: ใช้ imp.find_module (Python 2/3.3-) import imp try: imp.find_module(eggs) found = True except ImportError: found = False print(found) # False วิธีที่ 2: ใช้ pkgutil.iter_modules (แนะนำ) from pkgutil i

  12. Import โมดูลใน Python Azure Functions (รุ่นทดลอง)

    ขณะเขียน Python บน Azure Functions ยังเป็นสถานะ Experimental ไม่มี Package Manager ติดตั้งให้ จำเป็นต้องนำโมดูลมาเอง วิธีที่ 1: อัปโหลดโมดูลผ่าน Portal/Kudu อัปโหลดไฟล์โมดูล (.py หรือไดเรกทอรีแพ็กเกจ) ไปยัง Function App เหมาะสำหรับโมดูลเล็ก จำนวนน้อย วิธีที่ 2: ใช้ Virtualenv บน Kudu Console (แน

  13. ใช้ easy_install ติดตั้งโมดูล Python (และทำไมควรใช้ pip แทน)

    easy_install เปิดตัวปี 2004 ส่วนหนึ่งของ setuptools เน้นติดตั้งจาก PyPI และดึง Dependency อัตโนมัติ ทำไมต้องเปลี่ยนมาใช้ pip? pip ปล่อยปี 2008 แก้จุดอ่อนของ easy_install รองรับการ Uninstall, Upgrade, Requirements File จัดการ Dependency ดีกว่า ลดปัญหา Broken Environment เป็นมาตรฐานปัจจุบัน (PEP 453

  14. ติดตั้งและ Import โมดูล Python ใน Runtime

    ใช้ pip ติดตั้งแพ็กเกจระหว่างรันโปรแกรม และ importlib.import_module() นำเข้าโดยใช้ชื่อเป็นสตริง ตัวอย่างฟังก์ชันติดตั้งอัตโนมัติ import pip import importlib def import_with_auto_install(package): try: return importlib.import_module(package) except ImportError: pip.main([ins

  15. อธิบาย Python Namespace ให้เข้าใจง่าย

    คิดว่า Namespace เหมือน บริบทการทำงาน (Evaluation Context) ที่แต่ละฟังก์ชัน โมดูล คลาส หรือแพ็กเกจ มีของตัวเอง จุดสำคัญ เมื่อเริ่มทำงาน → สร้าง Namespace ใหม่ เมื่อจบการทำงาน → Namespace หายไป ตัวแปรก็หายตาม มี Global Namespace สำรองไว้ หาไม่เจอใน Local จะมาหาที่นี่ ลำดับการค้นหา (LEGB Rule) L

  16. พัฒนาโปรแกรมด้วย Python Namespace Packages

    Namespace Package ใน Python ช่วยกระจายโค้ดไปอยู่ในหลายโปรเจกต์แยกกัน เหมาะสำหรับปล่อยไลบรารีที่เกี่ยวข้องกันเป็นชิ้นส่วนแยกกัน (Separate Distributions) โครงสร้างตัวอย่าง Package-1/namespace/__init__.py Package-1/namespace/module1/__init__.py Package-2/namespace/__init__.py Package-2/namespace/modul

  17. ทำไมต้องมี <code>if __name__ == "__main__":</code> ใน Python?

    เมื่อตัวแปลภาษา Python อ่านไฟล์ต้นฉบับ (Source File) จะทำการรันโค้ดทั้งหมดที่อยู่ในไฟล์นั้น ก่อนรัน ตัวแปลจะกำหนดตัวแปรพิเศษบางตัว โดยเฉพาะ __name__ ค่าของ __name__ รันไฟล์โดยตรง: __name__ == __main__ ถูกนำเข้า (Import) เป็นโมดูล: __name__ จะเป็นชื่อโมดูล (เช่น mymodule) จุดประสงค์ รูปแบบนี้ช่วย

  18. เนมสเปซ (Namespace) ใน Python คืออะไร?

    เนมสเปซ (Namespace) เป็นกลไกที่ใช้ในการกำหนดขอบเขต (Scope) ของตัวแปร ใน Python ทุกแพ็กเกจ โมดูล คลาส ฟังก์ชัน และเมธอด จะมี เนมสเปซ ของตัวเอง ซึ่งเป็นบริบทที่ชื่อตัวแปรถูกค้นหาและแก้ไข การทำงานของเนมสเปซ เมื่อฟังก์ชัน โมดูล หรือแพ็กเกจ เริ่มทำงาน (Evaluated) เนมสเปซใหม่จะถูกสร้างขึ้น คล้ายกับ บริบท

  19. Recursive Functions ใน Python สร้าง Namespace ใหม่ทุกครั้งที่เรียกตัวเองหรือไม่?

    ใช่ ทุก function call (ไม่ใช่แค่ recursive) สร้าง namespace ใหม่ แต่ objects ถูกส่งผ่าน parameters แบบ pass-by-reference Namespace ใหม่ได้ reference copy ของ object เดียวกัน หากเปลี่ยนเนื้อหา object จะเห็นการเปลี่ยนแปลงใน calling function รายละเอียด: Interpreter สร้าง frame object push ลง frame stac

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:19/451  20-คอมพิวเตอร์/Page Goto:1 13 14 15 16 17 18 19 20 21 22 23 24 25