หลายคนที่ฝึกเขียนภาษาไพธอนน่าจะชินกับการใช้ IDE (สิ่งแวดล้อมสำหรับการพัฒนาแบบเบ็ดเสร็จ) อย่าง IDLE, spyder, canopy
ปกติเวลาที่จะรันโปรแกรมภาษาไพธอน ถ้าหากใช้พวก IDE เมื่อเขียนโค้ดเสร็จก็กดปุ่มรันเพื่อรันได้เลย
แต่จริงๆโดยพื้นฐานแล้วโค้ดไพธอนสามารถรันผ่านคอมมานด์ไลน์
(คอมมานด์ไลน์คืออะไร ใช้ยังไง อ่านได้ใน
https://phyblas.hinaboshi.com/20190124) วิธีการรันไพธอนผ่านคอมมานด์ไลน์ก็คือแค่พิมพ์คำสั่ง python แล้วตามด้วยชื่อไฟล์ที่เขียนโค้ดไพธอนไว้
python ชื่อไฟล์.py
นอกจากนี้ใน mac หรือ linux มีวิธีตั้งให้รันโค้ดโดยตรงโดยพิมพ์แค่ชื่อไฟล์โค้ด รายละเอียดอ่านได้ใน
https://phyblas.hinaboshi.com/20190108 ข้อเสียอย่างหนึ่งของการรันโค้ดไพธอนผ่านคอมมานด์ไลน์ก็คือ เมื่อรันเสร็จโปรแกรมจะสิ้นสุดการทำงานทันที ตัวแปรทั้งหมดจะหายไป ไม่สามารถทำงานต่อเนื่องได้
และอีกอย่างคือ การรันไพธอนผ่านคอมมานด์ไลน์จะละเลย PYTHONSTARTUP ที่เอาไว้ตั้งโค้ดที่จะรันตอนเริ่มต้นไพธอน ด้วยวิธีดังที่แนะนำไปใน
https://phyblas.hinaboshi.com/20190107 หากพิมพ์แค่ python เฉยๆ ไม่ได้ตามด้วยชื่อไฟล์ แบบนี้จะเป็นการเปิดเชลโต้ตอบของไพธอนขึ้นมา
python
ป้อนค่าเพิ่มเติมเข้าไปให้โปรแกรมเวลารัน ข้อดีของการรันไพธอนผ่านคอมมานด์ไลน์ก็คือ สามารถป้อนค่าเข้าไปให้โปรแกรม นอกเหนือจากที่เขียนอยู่ในโค้ด
ปกติแล้วเวลาที่รันไฟล์ ชื่อไฟล์ที่รันจะถูกเก็บอยู่ในตัวแปร sys.argv ซึ่งอยู่ในมอดูล sys (ต้อง import มาถึงใช้ได้)
เช่นลองสร้างไฟล์ขึ้น
# p.py
import sys
print(sys.argv)
บันทึกแล้วพิมพ์รันในคอมมานด์ไลน์
python p.py
# ได้ ['p.py']
จะได้ว่า sys.argv เป็นลิสต์ที่มีสมาชิกอยู่ตัวเดียวคือชื่อไฟล์
แต่ว่าถ้าเราลองพิมพ์หาค่า sys.argv ดูในเชลโต้ตอบจะได้ลิสต์เปล่า
import sys
print(sys.argv)
# ได้ ['']
ที่เป็นแบบนี้เพราะว่าค่านี้จะมีเฉพาะเมื่อสั่งรันไฟล์
แต่ว่าหากลองไม่ใช่แค่พิมพ์ชื่อไฟล์เฉยๆ แต่ใส่อะไรต่อท้ายลงไป
python p.py ชิพกะเดลนี่สองพี่น้องขายของในคลอง
# ได้ ['p.py', 'ชิพกะเดลนี่สองพี่น้องขายของในคลอง']
จะเห็นว่าสิ่งที่ใส่ไปก็จะปรากฏเป็นค่าตัวที่สองใน sys.argv
ถ้าเว้นวรรคก็จะแยกเป็นหลายตัว
python p.py ชิพ กะ เดล
# ได้ ['p.py', 'ชิพ', 'กะ', 'เดล']
ด้วยความสามารถตรงนี้ ทำให้สามารถเขียนโปรแกรมที่ให้ผลต่างออกไปในการรันแต่ละครั้งโดยที่ไม่ต้องไปแก้ตัวโค้ดได้
ตัวอย่างเช่น โปรแกรมที่ให้บวกเลขทุกตัวที่ป้อนเข้าไปอาจเขียนแบบนี้
# บวกเลข.py
import sys
print(sum(map(int,sys.argv[1:])))
python บวกเลข.py 5 6 1
# ได้ 12
เอาไปประยุกต์ใช้งานต่างๆได้มากมาย
ตัวเลือกเสริมของคำสั่ง python เวลาใช้คำสั่ง python ในคอมมานด์ไลน์ ถ้าเติมตัวเลือกเสริมต่อเข้าไปจะทำให้ได้ผลต่างกันออกไป ทำอะไรต่างๆได้
ในที่นี้จะยกส่วนนึงมาให้ดู
เริ่มจาก ถ้าอยากได้ข้อมูลว่าคำสั่งไหนทำอะไรบ้างให้เติม -h หรือ --help
python -h
หรือ
python --help
หากอยากรู้เวอร์ชันของไพธอนที่ใช้อยู่สามารถเติม -V หรือ --version
python -V
# ได้ Python 3.7.1
หรือ
python --version
# ได้ Python 3.7.1
ระวังอย่าสับสนกับ -v เพราะตัวพิมพ์เล็กพิมพ์ใหญ่มีผลต่างกันหมด
ตัวเลือก -v นี้หมายถึงว่าให้เวลารันไพธอนมีการป้อนค่าตัวหนังสือบอกรายละเอียดออกมาเพิ่มมากกว่าปกติ เช่นเวลาเริ่มการทำงานไพธอนและสิ้นสุดการทำงาน
python -v
ในทางกลับกัน ตัวเลือก -q จะทำให้ปรากฏข้อความออกมาน้อยลง คือจะไม่แสดงเวอร์ชันและคำอธิบายลิขสิทธิ์ซึ่งมักจะโผล่ขึ้นมาทุกครั้งเวลาเปิดเชลโต้ตอบ
python -q
หากต้องการรันไพธอนโดยละเลยพวกตัวแปรสภาพแวดล้อมต่างๆที่เกี่ยวกับไพธอน เช่น PYTHONPATH ให้ใส่ -E
python -E
หากต้องการรันโค้ดไพธอนโดยไม่ต้องเขียนลงไฟล์ให้ใส่ตัวเลือก -c แล้วต่อด้วยโค้ดที่ต้องการ
python -c "print(1+2)"
# ได้ 3
ตัวสุดท้ายที่จะแนะนำคือ -B
ปกติเวลาที่รันมอดูลที่สร้างขึ้นมาใหม่เป็นครั้งแรกจะมีการสร้าง .pyc เป็นการทำ cache มอดูลไว้ รายละเอียดอ่านได้ที่
https://phyblas.hinaboshi.com/tsuchinoko34 หากใส่ตัวเลือก -B จะทำให้ไม่มีการสร้างไฟล์ .pyc โดยอัตโนมัติเวลาที่ทำการ import มอดูล
มีผลทั้งเวลารันเชลโต้ตอบ (ไม่ใส่ชื่อไฟล์) และเวลารันไฟล์
python -B
python -B ชื่อไฟล์.py
นอกจากนี้ยังมีตัวเลือกเสริมอื่นๆอีกมากมาย ที่เหลือพิมพ์ python -h ดูได้
ใช้ ipython หากใครมี ipython ก็สามารถพิมพ์ว่า ipython ในคอมมานด์ไลน์เพื่อเปิดเชลโต้ตอบในโหมดของ ipython ในนั้นได้
ipython
คำสั่ง ipython ยังใช้รันไฟล์ได้
ipython ชื่อไฟล์.py
ส่วนพวกตัวเลือกเสริมใน ipython จะต่างไปจาก python ธรรมดา ตัวเลือกเสริมมีเยอะกว่ามาก
รายละเอียดสามารถดูได้ด้วยการใส่ตัวเลือกเสริม -h หรือ --help เช่นกัน
ipython -h
หรือ
ipython --help