ในบทความนี้ เราจะมาดูวิธีสร้าง function ใน Python กัน โดยบทความนี้แบ่งเป็น 4 ส่วน:
defsyntax: การใช้ def เพื่อสร้าง function- Docstring: การเขียนวิธีใช้งาน function
- Arguments: การกำหนด arguments ใน function
lambda: การสร้าง function แบบไม่ระบุชื่อ
ถ้าพร้อมแล้ว ไปเริ่มกันเลย
💻 def Syntax
ใน Python เราสามารถสร้าง function ได้ด้วย def ซึ่งประกอบด้วย 4 ส่วน:
# Name and arguments
def name(arguments):
# Body
Do something
# Return
return result
- name = ชื่อ function
- arguments = input สำหรับ function
- Body = การทำงานของ function
- Return = ส่งผลลัพธ์กลับออกมาจาก function *
(Note: * เราสามารถใช้ print() แทน return ได้ ในกรณีที่เราต้องการแสดงผลลัพธ์ใน console)
ยกตัวอย่างเช่น สร้าง function สำหรับคำนวณ BMI (body mass index) ซึ่งต้องการ 2 arguments คือ น้ำหนัก (weight) และส่วนสูง (height):
# Create a function that calculates BMI
def calculate_bmi(weight, height):
# Calculate BMI
bmi = weight / (height ** 2)
# Round to 2 decimals
bmi_rounded = round(bmi, 2)
# Return BMI
return bmi_rounded
เราสามารถเรียกใช้ function ที่สร้างเสร็จแล้ว ด้วยการเรียกใช้ชื่อ function เช่น:
# Use the BMI calculator function
my_bmi = calculate_bmi(weight=80, height=1.8)
# Print the result
print(my_bmi)
ผลลัพธ์:
24.69
📃 Docstring
.
🤔 Why Docstring?
ในตัวอย่าง bmi_cal() เราจะเห็นว่า weight และ height มีได้หลายค่า ขึ้นอยู่กับหน่วยวัดที่ใช้ เช่น:
height: metre = 1.8; feet = 5.9weight: kg = 80; pound = 176
ถ้าเราใส่ค่าไม่ถูกต้องลงใน function เราจะได้ผลลัพธ์ที่ผิดกลับมา เช่น ใส่ height เป็น cm:
# Using incorrect input
wrong_bmi = calculate_bmi(weight=80, height=180)
# Print the result
print(wrong_bmi)
ผลลัพธ์:
0.0
.
🥸 What Is Docstring?
เราสามารถแก้ปัญหานี้ได้ 2 วิธี:
- ตั้งชื่อ arguments ให้เรารู้ว่า ต้องใส่อะไรใน function (เช่น
height_in_m,weight_in_kg) - ใส่ docstring หรือ string ที่เก็บวิธีใช้ function ไว้
เราสามารถเพิ่ม docstring ใน function ได้แบบนี้:
# Adding docstring to the function
def calculate_bmi(height, weight):
# Docstring
"""
Calculate BMI using weight and height:
- Weight: kg
- Height: m
Return BMI rounded to 2 decimals.
"""
# Calculate BMI
bmi = weight / (height ** 2)
# Round to 2 decimals
bmi_rounded = round(bmi, 2)
# Return BMI
return bmi_rounded
Pro tip: เราควรใส่ docstring ไว้ใน function โดยเฉพาะใน code ที่ใช้งานร่วมกับคนอื่น เพื่อให้คนอื่นเข้าใจการทำงาน function ของเรา
.
😎 Reading Docstring
เราสามารถอ่าน docstring ได้ 2 วิธี:
วิธีที่ 1. ใช้ help():
# Read docstring with help()
help(calculate_bmi)
ผลลัพธ์:
Help on function calculate_bmi in module __main__:
calculate_bmi(height, weight)
Calculate BMI using weight and height:
- Weight: kg
- Height: m
Return BMI rounded to 2 decimals.
วิธีที่ 2. ใช้ .__doc__:
# Read docstring with .__doc__:
print(calculate_bmi.__doc__)
ผลลัพธ์:
Calculate BMI using weight and height:
- Weight: kg
- Height: m
Return BMI rounded to 2 decimals.
💬 Arguments
เรามาดูการกำหนด 2 ประเภท arguments ใน functions กัน:
- Default arguments
- Arbitrary arguments
.
🫡 Default Arguments
Default arguments เป็นค่าที่ function จะเรียกใช้ถ้าเราไม่กำหนด arguments เอง
ยกตัวอย่างเช่น สร้าง function สำหรับคิดเลขยกกำลัง ซึ่งจะยกกำลัง 2 โดย default:
# Create a function with default arguments
def calculate_power(number, power=2):
# Calculate number to the power of power
result = number ** power
# Return result
return result
# Call the function without power
print(calculate_power(10))
ผลลัพธ์:
100
แต่ถ้าเรากำหนด power เอง:
# Call the function with power
print(calculate_power(10, 3))
ผลลัพธ์จะเปลี่ยนไป:
1000
.
😶🌫️ Arbitrary Arguments
Arbitrary arguments เป็นประเภท argument ที่เรากำหนดในกรณีที่เราไม่รู้ว่า จะมีกี่ arguments
เราสามารถสร้าง function ที่รับ arguments แบบไม่ระบุจำนวนได้ 2 วิธี:
*args: มี positional arguments (arguments ที่ใส่ตามลำดับ) แบบไม่ระบุจำนวน**kargs: มี keyword arguments (arguments ที่ใส่ตาม keywords) แบบไม่ระบุจำนวน
ยกตัวอย่าง *args เช่น สร้าง function สำหรับคำนวณราคาสินค้าในตระกร้า ซึ่งเราไม่รู้ว่า จะมีสินค้ากี่ชิ้น:
# Create a function calculate total price
def calculate_total_price(*prices):
# Calculate sum
total = sum(prices)
# Return total
return total
# Examples
total_basket_01 = calculate_total_price(500, 1000)
total_basket_02 = calculate_total_price(100, 200, 300)
print(f"Basket 1: {total_basket_01}")
print(f"Basket 2: {total_basket_02}")
ผลลัพธ์:
Basket 1: 1500
Basket 2: 600
ยกตัวอย่าง **kargs เช่น สร้าง function เก็บข้อมูล user ซึ่งแต่ละ user มีข้อมูลไม่เท่ากัน:
# Create a function to return user's data
def user_profile(**user_data):
return user_data
# Examples
print(f"User 1: {user_profile(name='John')}")
print(f"User 2: {user_profile(name='Jane', gender='F', age=20)}")
ผลลัพธ์:
User 1: {'name': 'John'}
User 2: {'name': 'Jane', 'gender': 'F', 'age': 20}
Note:
- Arguments ใน
*argsจะถูกเก็บรวมในรูปของ tuple - Arguments ใน
**kargsจะถูกเก็บรวมในรูปของ dictionary
🛋️ lambda
lambda เป็นการสร้าง function แบบไม่ระบุชื่อ โดยเราเขียนได้ดังนี้:
lambda arguments: expression
lambda มักใช้สร้าง function ขนาดเล็ก เช่น function หาผลรวม:
# Create a function using lambda
addition = lambda a, b: a + b
# Call addition
print(addition(1, 1))
ผลลัพธ์:
2
จะเห็นได้ว่า lambda ในตัวอย่างมีค่าเท่ากับการใช้ def แบบนี้:
# Same as lambda
def addition(a, b):
return a + b
เมื่อเทียบกับ def จะเห็นว่า lambda มีการเขียนที่สั้นและง่ายกว่า
เรามักใช้ lambda ในกรณีที่ต้องการสร้าง function อย่างง่ายและรวดเร็ว
และเรามักใช้ def ในกรณีที่:
- สร้าง function ที่มีความซับซ้อน (มีการทำงานหลายขั้นตอน)
- สร้าง function สำหรับใช้งานร่วมกับคนอื่น เพราะ
defจะทำให้คนอื่นอ่าน code ได้ง่ายกว่า
😺 GitHub
ดูตัวอย่าง code ทั้งหมดได้ที่ GitHub

Leave a reply to Python for AI: รวบรวม 8 บทความการทำงานกับ AI ด้วย Python – Shi no Shigoto Cancel reply