ชุดคำสั่งที่ต้องเขียนซ้ำๆ สามารถจัดการได้ง่ายผ่านการสร้าง function เรียนกับ Ultimate Python
Function
คือ object ที่ถูกสร้างขึ้นเพื่อบันทึกชุดคำสั่งเพื่อนำไปใช้ซ้ำในอนาคต เนื่องจากเมื่อทำโปรแกรมที่ใหญ่ขึ้นอาจมีหลายชุดคำสั่งที่ต้องทำซ้ำ หากจะเขียนซ้ำๆ ทุกครั้งไปในการเขียนก็อาจทำให้โค้ดดูแลได้ยาก ทั้งมองดูโค้ดเต็มไปหมด และหากมีอัพเดทในชุดคำสั่งนั้นๆ ก็ต้องมานั่งไล่แก้ในทุกคำสั่งไป
แต่หากเขียนชุดคำสั่งที่ใช้งานบ่อยๆ ไว้ใน function เราสามารถเก็บชุดคำสั่งนี้ไปใช้งานได้เพียงแค่เรียกชื่อ function และหากต้องการแก้ไขก็สามารถแก้ไขได้ที่ตัวฟังก์ชัน คำสั่งที่เรียกใช้ฟังก์ชันตัวนั้นก็จะถูกอัพเดททันที ทำให้โค้ดดูสบายตา และดูแลง่าย
การสร้าง Function
ใช้ def statement ซึ่ง function ใดๆ ประกอบด้วย 1) ส่วนของ def statement ที่ประกอบด้วยคำสั่ง def ตามด้วยชื่อที่ต้องการ () ที่ใส่ parameter ตามด้วย: และ 2) ชุดคำสั่งที่ต้องการเก็บไว้ใน function ดังกล่าว
สร้างโปรแกรมเทียบตัวเลขเป็น Function
โดยสร้าง function ชื่อว่า get_larger() ที่รับค่าตัวเลขเก็บไว้ใน parameter a, b และนำเลขทั้งสองตัวมาเปรียบเทียบกัน หากตัวเลขไหนมีค่ามากกว่าให้แสดงผลของเลขที่มีค่ามากกว่า หากตัวเลขทั้งสองตัวมีค่าเท่ากันให้แสดงผลว่า EQUAL
In [1]:
def get_larger(a,b):
if a > b:
print(a)
elif a < b:
print(b)
else:
print('EQUAL')
function เองเป็น object ประเภท function
In [2]:
type(get_larger)
Out[2]:
function
การใช้ Function
parameter และ argument
ใช้การเรียกชื่อ function ตามด้วย () และใส่ arguments เหมือนกับ function, method โดยทั่วไป เช่น การเรียกใช้งาน get_larger ที่เพิ่งสร้าง
parameter และ argument
สำหรับตัวแปรที่สร้างขึ้นใน function เพื่อรับค่าจะเรียกว่า parameter เช่น parameter a, b ใน function get_larger แต่ค่าที่ใส่เข้าไปใน function จะเรียกว่า arguments เช่น 5, 10 เป็น arguments
In [3]:
get_larger(5,10)
10
Function และ Arguments
arguments คือค่าที่เราจะใส่เข้าไปใน parameter ที่กำหนดไว้ของ function
Function ตัวอย่าง
ฟังก์ชัน described_pet() ที่มี parameter animal_type รับชนิดสัตว์เลี้ยง และ pet_name รับชื่อสัตว์เลี้ยง เพื่อนำไปแสดงผล
In [4]:
def described_pet(animal_type,pet_name):
print(f'I have a {animal_type}.')
print(f"My {animal_type}'s name is {pet_name}.")
Positional Arguments
คือ การใส่ค่า arguments ลงไปใน function แบบอ้างอิงตำแหน่งที่อยู่ของ parameter เช่นการใส่ dog, Dum ไปใน function described_pet parameter animal_type จะรับค่า dog และ parameter pet_name จะรับค่า Dum ตามลำดับ
In [5]:
described_pet('dog','Dum')
I have a dog. My dog's name is Dum.
Keyword Arguments
คือการใส่ arguments แบบกำหนด parameter ที่ต้องการใส่ การใส่แบบนี้จะทำให้ตำแหน่งของการใส่ argument ไม่มีผล แต่ใช้ parameter เป็นตัวระบุข้อมูลแทน
In [6]:
described_pet(pet_name='Dum',animal_type='dog')
I have a dog. My dog's name is Dum.
Default Value
หาก parameter ใด เราจะตั้งค่าให้ ใส่ หรือ ไม่ใส่ค่าก็ได้ เราจะต้องตั้ง default ของ parameter นั้นๆ โดยการระบุ parameter=default เช่นการตั้ง default ของ parameter animal_type และ pet_name เป็นค่า dog และ Dum
In [7]:
def described_pet(animal_type='dog',pet_name='Dum'):
print(f'I have a {animal_type}.')
print(f"My {animal_type}'s name is {pet_name}.")
ผลลัพธ์ของ Default
In [8]:
described_pet()
I have a dog. My dog's name is Dum.
Arbitary Number of Arguments (*args)
เราสามารถสร้าง parameter ที่กำหนดขึ้นให้ใส่ตัวแปรกี่ตัวก็ได้ด้วยสัญลักษณ์ *ตามด้วยชื่อของ parameter ที่ต้องการ โดย parameter ดังกล่าวจะถูกสร้างเป็น object ประเภท tuple ที่สามารถนำหลายๆ ค่าที่รับมา มาเก็บไว้ใน parameter ตัวนั้น
*args
สร้าง parameter toppings ที่เก็บหลาย arguments ไว้ใน tuple
In [9]:
def make_pizza(*toppings):
print('Making pizza with: ')
for topping in toppings:
print(topping)
In [10]:
make_pizza('cheese, olive, shrimp')
Making pizza with: cheese, olive, shrimp
Arbitary Keyword Arguments (**kwargs)
เราสามารถเปิดรับ parameter หลายค่าในลักษณะของ name-value pair หรือมีการบันทึก arguments ที่ต้องการบันทึกลง Dictionary และกำหนด key สำหรับ argument ได้ด้วยการใช้สัญลักษณ์ **ตามด้วย parameter ที่จะถูกสร้างเป็น Dictionary
*kwargs
สร้าง parameter toppings ที่เก็บหลาย arguments ไว้ในรูปแบบของ dictionary
In [11]:
def build_profile(first,last,**user_info):
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
In [12]:
build_profile('Sippanon','Wichiramala',location='Unknown',computer_language='Python')
Out[12]:
{'location': 'Unknown', 'computer_language': 'Python', 'first_name': 'Sippanon', 'last_name': 'Wichiramala'}
การส่งต่อข้อมูล
หนึ่งในสิ่งสำคัญของการเขียนโปรแกรม คือ การนำคำสั่งต่างๆ มาทำงานร่วมกับเป็นระบบ มีการส่งต่อข้อมูลระหว่างคำสั่งเพื่อให้ข้อมูลถูกปรับเปลี่ยนและส่งต่อไปยังคำสั่งที่ถูกต้อง ซึ่งการ return ค่าของ function เป็น เครื่องมือที่จะใช้เพื่อส่งต่อค่าที่เราต้องการ
ผลลัพธ์ที่ไม่มี return
จะไม่มีการส่งต่อข้อมูลใดๆ อาจมีการแสดงผล แต่ไม่สามารถนำข้อมูลเข้าไปทำงานกับ function และนำผลลัพธ์ไปใช้งานต่อได้
In [13]:
def get_larger(a,b):
if a > b:
print(a)
elif a < b:
print(b)
else:
print('EQUAL')
นำผลลัพธ์ข้อมูล object เก็บไว้ในตัวแปร result
In [14]:
result = get_larger(10,5)
10
result ไม่มีการเก็บข้อมูลใดๆ
In [15]:
result
การใช้ return เพื่อส่งต่อข้อมูล
สามารถทำได้ในการใช้งานกับ function และใช้ได้ในกรณีเดียวคือใช้ใน function เท่านั้น โดย return เป็นคำสั่งที่ส่งต่อข้อมูลต่อไปเมื่อคำสั่ง return ทำงาน ในการทำงานกับ function 1 ครั้งจะได้ผลลัพธ์ผ่าน return แค่ 1 ครั้งเท่านั้น
สร้าง get_larger() ใหม่ให้ return ค่าแทนการ print
In [16]:
def get_larger(a,b):
if a > b:
return a
elif a < b:
return b
else:
return 'EQUAL'
นำผลลัพธ์ข้อมูล object เก็บไว้ในตัวแปร result
In [17]:
result = get_larger(10,5)
ได้ข้อมูลมาเป็น object
In [18]:
result
Out[18]:
10
เสร็จสิ้นการสร้าง function
เรียนเรียน Python จาก 0 ฉบับวัยทำงานยุคใหม่
เริ่มไว ใช้ได้ทันที พร้อมการดูแลจากผู้สอนโดยตรง และกลุ่มแลกเปลี่ยนความรู้
เรียนรู้เกี่ยวกับคอร์สเรียนเพิ่มเติม https://ultimatepython.teachable.com/p/python-automation
Comments