top of page

เขียน Python ให้โปรด้วย function

Updated: Aug 15, 2021

ชุดคำสั่งที่ต้องเขียนซ้ำๆ สามารถจัดการได้ง่ายผ่านการสร้าง 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





11,558 views0 comments

Comments


bottom of page