Learning AtlasIT Support → Cybersecurity
คลังบทอ่าน13.1 / ไพธอนและงานอัตโนมัติบทถัดไป
สารบัญบทอ่าน / Python and Automation / 13.1
04 · เขียนโค้ดและนำระบบไปใช้ · บท 13.1

Programming Basics

พื้นฐานการเขียนโปรแกรม

เริ่ม Python ด้วยโปรแกรมเล็กที่อ่านออกว่าแต่ละบรรทัดทำอะไร แล้วค่อยเพิ่มเงื่อนไขและงานซ้ำ

3 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
OS
ระบบปฏิบัติการ จัดการทรัพยากรและให้บริการกับโปรแกรม
VM
เครื่องเสมือนที่รัน guest OS บนทรัพยากรที่ hypervisor จัดให้
จากหลักการไปถึงกลไก

Python ทำตามลำดับ โดยชื่ออ้างค่าที่ใช้งาน

Interpreter ประมวลโค้ดตามกติกาภาษา ชื่อ variable ใน Python ผูกกับ object ไม่ใช่กล่องฮาร์ดแวร์ที่มีชนิดคงที่ตลอดเวลา Object มีชนิด เช่น int str bool list ที่กำหนดการกระทำได้ การเลือกเงื่อนไขและวนซ้ำทำให้ขั้นตอนตอบกับข้อมูลต่างชุดได้

ลำดับงาน · อ่านตามลูกศรPython ทำตามลำดับ โดยชื่ออ้างค่าที่ใช้งาน
  1. Environment

    เลือก Python และ dependencies ที่โค้ดต้องใช้ Virtual environment แยกชุดแพ็กเกจ ไม่ใช่ VM ทั้ง OS

  2. Assignment

    x = 2 ผูกชื่อ x กับค่าจำนวนเต็ม การใช้ x ไม่ใส่ quotes ส่วน 'x' เป็นข้อความ

  3. Condition

    if เลือกทางจากผลตรรกะ เปรียบเทียบชนิดและค่าตามเจตนา

  4. Loop

    for เดินผ่านรายการ while ทำซ้ำตามเงื่อนไข ต้องรู้เมื่อใดจะหยุด

  5. Result

    แสดงหรือส่งคืนผล print ไม่ใช่การบันทึกไฟล์ และไม่ใช่ return ของฟังก์ชัน

ค่าที่หน้าตาเหมือนกัน อาจมีชนิดต่างกัน
Expression Pythonผลเหตุผล
2 + 35int บวกจำนวน
'2' + '3''23'str ต่อข้อความ
int('2') + 35แปลงข้อความที่ถูกต้องก่อนบวก
int('two')ValueErrorข้อมูลไม่ตรงรูปแบบจำนวน
print(5)แสดง 5 · คืน Noneแสดงผลไม่ใช่ return ค่าจำนวน

Assignment ผูกชื่อกับ object ตามกติกา Python ชนิดเป็นคุณสมบัติของ object ไม่ได้เกิดจากนามสกุลไฟล์หรือชื่อ variable

2 + 3 ได้ 5 แต่ '2' + '3' ได้ '23' เพราะเป็นการต่อข้อความ การแปลงชนิดอาจล้มเหลวหากข้อมูลไม่ตรงรูปแบบ ชื่อเดียวกันอาจผูกค่าใหม่ได้ แต่การเปลี่ยน object ที่หลายชื่ออ้างร่วมกันมีผลต่างจากการผูกชื่อใหม่

01 / 03

สภาพแวดล้อมและสคริปต์Python Environment and Scripts · 13.1.1

Environment กำหนด interpreter และส่วนที่ใช้ Script คือไฟล์คำสั่งที่นำไปรัน

Python interpreter อ่านและรันโปรแกรม Environment ระบุ interpreter และ libraries ที่ใช้ Virtual environment แยก dependency ของโครงการจากระบบเพื่อให้ติดตั้งและทำซ้ำได้

เทียบหน้าที่เพื่อไม่สับสน
•Interpreter

ตัวรันภาษา

•Environment

ชุด library ที่ใช้

•Script

ไฟล์คำสั่งที่ประมวลผล

python script.py ใช้ interpreter ที่คำสั่งนั้นชี้ หาก import ไม่ได้ให้ตรวจ interpreter และ environment ไม่ติดตั้ง package ทุกแห่งแบบเดา เก็บ dependency ที่ทราบรุ่นและไฟล์โครงการไว้ด้วย

ที่มาของหัวข้อนี้ · 2 รายการ

คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส

02 / 03

ตัวแปรและชนิดข้อมูลVariables and Data Types · 13.1.2

ตัวแปรอ้างถึงค่า ชนิดข้อมูลกำหนดการทำงาน เช่น บวกตัวเลขกับต่อข้อความ

Variable เป็นชื่ออ้าง object ชนิดข้อมูลกำหนดการทำงาน เช่น int, float, str, bool, list และ dict การแปลงชนิดต้องรู้รูปแบบต้นทาง Input จากไฟล์หรือผู้ใช้มักเป็นข้อความแม้ดูเหมือนตัวเลข

เทียบหน้าที่เพื่อไม่สับสน
•Name

ชื่อที่อ้าง object

•Type

ชนิดและพฤติกรรมของค่า

•Conversion

การตีความค่าเป็นชนิดใหม่

"10" + "2" ได้ "102" ส่วน 10 + 2 ได้ 12 ตรวจค่าก่อน int(...) เพราะข้อความผิดรูปแบบทำให้เกิด exception ความเข้าใจชนิดช่วยไม่เปรียบเทียบจำนวนแบบตัวอักษร

Aliasing versus Rebinding (แชร์ object กับเปลี่ยนชื่ออ้างอิง)

ถ้า a = [1] แล้ว b = a สองชื่ออ้าง list เดียวกัน เมื่อ a.append(2) b ก็เห็น [1, 2] เพราะ object ถูกเปลี่ยน แต่ถ้าทำ a = [9] จะผูก a ไป list ใหม่ ส่วน b ยังอ้าง list เดิม นี่คือเหตุที่การ copy ชื่อกับ copy ข้อมูลไม่เหมือนกัน

ชนิด mutable เช่น list เปลี่ยนเนื้อหาได้ ส่วน string ทำงานโดยสร้างค่าใหม่ตาม operation การส่ง object เข้า function จึงต้องรู้ว่าฟังก์ชันแก้ object นั้นหรือคืนค่าใหม่ ไม่ถือว่า parameter ทุกตัวเป็นสำเนาข้อมูลอิสระ

Aliasing versus Rebinding (แชร์ object กับเปลี่ยนชื่ออ้างอิง)
ขั้นab
a = [1]; b = a[1][1] object เดียวกัน
a.append(2)[1, 2][1, 2]
a = [9][9] object ใหม่[1, 2] object เดิม
ข้อความกับจำนวน
text = "10"
number = int(text)
print(text + "2")
print(number + 2)

บรรทัดแรกที่พิมพ์ได้ 102 เพราะต่อข้อความ ส่วนบรรทัดสองได้ 12 เพราะบวกจำนวน ถ้า text ไม่ใช่รูปแบบจำนวน int จะเกิด ValueError ที่ต้องจัดการตามงาน

ที่มาของหัวข้อนี้ · 2 รายการ

คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส

03 / 03

เงื่อนไขและลูปConditions and Loops · 13.1.3

if เลือกทางทำงาน loop ทำงานซ้ำ ต้องรู้เงื่อนไขหยุดและข้อมูลแต่ละรอบ

if เลือกทางตามเงื่อนไข for เดินผ่าน iterable while ทำซ้ำเมื่อเงื่อนไขยังจริง Indentation เป็นส่วนของไวยากรณ์ ต้องมีเงื่อนไขจบและเข้าใจว่าแต่ละรอบเปลี่ยนค่าอะไร

เทียบหน้าที่เพื่อไม่สับสน
•Condition

เงื่อนไขเลือกการทำงาน

•Iteration

ทำกับแต่ละรายการ

•Termination

เงื่อนไขหยุด

วนรายการ login แล้วนับรายการ failed ด้วย if ด้านใน for หาก while ไม่เปลี่ยนค่าที่ทำให้เงื่อนไขจบอาจวนไม่สิ้นสุด break จบ loop ส่วน continue ข้ามไป iteration ถัดไป

อ่านรอบการทำงาน
statuses = ["failed", "success", "failed"]
count = 0
for status in statuses:
    if status == "failed":
        count += 1
print(count)

รอบแรก count เป็น 1 รอบสองไม่เพิ่ม รอบสามเป็น 2 ค่าท้ายที่พิมพ์คือ 2 Indentation ทำให้ if อยู่ใน loop และ print อยู่หลัง loop นี่คือการนับรายการไม่ใช่ข้อสรุปว่ามีการโจมตี

ที่มาของหัวข้อนี้ · 3 รายการ

คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส

เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม

เชื่อมความเข้าใจ

นำศัพท์มาเชื่อมกับงาน

ตัวอย่างให้เห็นภาพ

เก็บจำนวนการล็อกอินล้มเหลวในตัวแปร แล้วใช้ if ตัดสินใจว่าจะบันทึกข้อความอะไร

สิ่งที่บทนี้เชื่อมไว้

เริ่ม Python ด้วยโปรแกรมเล็กที่อ่านออกว่าแต่ละบรรทัดทำอะไร แล้วค่อยเพิ่มเงื่อนไขและงานซ้ำ

ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป

บันทึกในเบราว์เซอร์นี้
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน

คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้

Python · Tutorial ↗