{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "waZDna5nPCfT" }, "source": [ "\n", "# Python Modules - วิธีการสร้าง \n", "\n", "**10** minutes\n", "\n", " **วัตถุประสงค์**\n", "\n", " หลังจากทำทำแล็บ นศ.จะสามารถ \n", "\n", "* เขียนโมดูลและใช้โมดูลที่สร้างขึ้นเองได้\n", "* ใช้ (Line & Cell) Magic Commands ใน IPython ได้\n", "\n", "Ref:\n", "* https://docs.python.org/3/tutorial/modules.html\n", "* https://docs.python.org/3/reference/import.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "โดยทั่วไป การเขียนโปรแกรมที่มีการนำไปใช้ประโยชน์ได้อย่างจริงจัง โปรแกรมจะมีขนาดใหญ่ ดังนั้นจึงมีความจำเป็นต้องแยกโปรแกรมออกเป็นส่วนๆ (หลายๆ ไฟล์) เพื่อให้ง่ายต่อการจัดการและแก้ไขโปรแกรม จนถึงการพัฒนาต่อยอดโปรแกรม\n", "\n", "Python เรียกแต่ละส่วนที่แยกออกมาว่า **โมดูล (module)** มีนามสกุลไฟล์ (Extension) เป็น .py \n", "\n", "\n", "## ไฟล์โมดูล\n", "\n", "ไฟล์โน๊ตบุ๊ค (Extension `.ipynb` (IPython Notebook); IPython kenel: Jupyter Notebook, IPython Notebook) ที่เราเขียนที่ผ่านๆ มา เก็บทั้งไพธอนซอสโค๊ด (Soure code) ใน _Code cell_ ข้อความเอกสาร (Markdown-formatted document/text) ใน _Markdown cell_ และผลลัพธ์ของการรันใน _Output cell_ ไว้ในไฟล์เดียว \n", "แต่สำหรับไฟล์ดโมดูล (Extension `.py`)เป็นไฟล์ที่มีเฉพาะไพธอนซอสโค๊ดเท่านั้น\n", "\n", "ดังนั้น การใช้โน๊ตบุ๊กเขียนโมดูลต้องเขียนเฉพาะไพธอนซอสโค๊ด (Code cell) เท่านั้น" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### วิธีการเปลี่ยนไฟล์โน๊ตบุ๊คเป็นไฟล์โมดูล\n", "\n", "หลังจากที่เราเขียนไพธอนซอสโค๊ดในไฟล์โน๊ตบุ๊คแล้ว เราก็ต้องเปลี่ยนไฟล์โน๊ตบุ๊ค (.ipynb) ให้เป็นไฟล์โมดูล (.py) โดยการ...\n", "* หากเขียนด้วย Jupyter notebook ให้กดตรงแถบเมนู \"File\" เลือก \"Download as\" แล้วคลิก \"Python (.py)\" ตั้งชื่อไฟล์ที่ต้องการเซฟ\n", "* หากเขียนด้วย Jupyter lab ให้กดตรงแถบเมนู \"File\" เลือก \"Export Notebook as\" แล้วคลิก \"Notebook to Executable Script\" ตั้งชื่อไฟล์ที่ต้องการเซฟ\n", "\n", "ก็จะได้ไฟล์ที่มีเฉพาะซอสโค๊ด (ส่วนอื่นๆ ที่ไม่ใช่ซอสโค๊ดจะกลายเป็น Comment) มีเป็นนามสกุลเป็น .py\n", "\n", "\n", "โดยปรกติไฟล์ทั้งหมด ทั้งไฟล์โปรแกรมหลักและไฟล์โมดูลต่างๆ จะถูกเก็บไว้ที่ Directory (Folder) เดียวกัน เราสามารถใช้ **Line magic command** `%pwd` ตรวจสอบ Directory (Folder) ที่กำลังใช้งานอยู่ได้ " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/Users/tube.sc/Data_KMITL/Courses_onMac/2021_Python'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%pwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
%pwd เป็นคำสั่งที่ใช้เฉพาะในกรณีที่รันภายใต้ IPython (Interactive Python) เช่น Jupyter notebook, JupyterLab, Google Colaboratory (Colab) เท่านั้น เมื่อรันคำสั่งนี้ จะแสดงผลลัพธ์ในเซลล์เอาต์พุตและบันทึกเก็บในโน้ตบุ๊กได้\n",
"\n",
"Magic Commands อื่นๆ เช่น %system date โดยสามารถพิมพ์คำสั่ง `%lsmagic` ลงใน Code cell เพื่อแสดงลิสต์ของ Magic Command ทั้งหมดได้ (ดูรายละเอียดในลิงค์ข้างบน)\n",
"