การใชฟ้ ังกช์ น่ั By KruNittaya Nunta AUGUST 29, 2020 รายวชิ า วิทยาการคานวณ ชนั้ มธั ยมศกึ ษาปีท่ี 3
ฟังกช์ นั ในบทน้ี คุณจะไดเ้ รียนรู้เกี่ยวกบั ฟังกช์ นั ในภาษา Python เราจะพดู ถึงการสร้างและการใชง้ านฟังกช์ นั ในเบ้ืองตน้ และการ เรียกใชง้ านฟังกช์ นั ในรูปแบบต่างๆ ที่สาคญั เช่น Default Argument และ Keyword Augment และมาก ไปกวา่ น้นั เราจะแนะนาใหค้ ุณรู้จกั กบั built-in ฟังกช์ นั ในภาษา Python การสร้างฟังกช์ นั ในภาษา Python ฟังกช์ นั (Function) คือส่วนของโคด้ หรือโปรแกรมที่ทางานเพอ่ื วตั ถุประสงคบ์ างอยา่ ง ในภาษา Python คุณสามารถ สร้างฟังกช์ นั ของคุณเองเพือ่ ใหท้ างานที่ตอ้ งการ ในการเขียนโปรแกรมเรามกั จะแยกโคด้ ท่ีมกี ารทางานเหมือนๆ กนั เป็น ฟังกช์ นั เอาไว้ และเรียกใชฟ้ ังกช์ นั น้นั ซ้าๆ ซ่ึงเป็นแนวคิดของการนาโคด้ กลบั มาใชใ้ หม่ (Code reuse) นี่เป็นรูปแบบ ของการประกาศฟังกช์ นั ในภาษา Python def function_name(args...): # statements def function_name(args...): # statements return value ในรูปแบบของการประกาศฟังกช์ นั ในภาษา Python น้นั จะใชค้ าสง่ั def และหลงั จากน้นั function_name เป็น ชื่อของฟังกช์ นั และในวงเลบ็ () เป็นการกาหนดพารามเิ ตอร์ของฟังกช์ นั พารามเิ ตอร์ของฟังกช์ นั น้นั สามารถมจี านวน เท่าไหร่ก็ไดห้ รือไม่มีก็ได้ และเช่นเดียวกบั ภาษาอ่ืนๆ ฟังกช์ นั อาจจะมหี รือไม่มีการส่งค่ากลบั สาหรับฟังกช์ นั ที่ไมม่ ีการ return ค่ากลบั น้นั เรามกั จะเรียกวา่ โพรซีเยอร์ (Procedure) ต่อไปมาดูตวั อยา่ งการประกาศและใชง้ านฟังกช์ นั ใน ภาษา Python def hello(name): print('Hello %s' % name) def count_vowel(str):
vowel = 0 for c in str: if c in ('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'): vowel = vowel + 1 return vowel def area(width, height): c = width * height return c ในตวั อยา่ ง เราไดส้ ร้างฟังกช์ นั จานวน 3 ฟังกช์ นั ฟังกช์ นั แรกมีช่ือวา่ hello() เป็นฟังกช์ นั สาหรับแสดงขอ้ ความทกั ทาย จากท่ีช่ือส่งเขา้ มา ฟังกช์ นั น้ีมีหน่ึงพารามเิ ตอร์คือ name สาหรับรับช่ือที่ส่งเขา้ มาในฟังกช์ นั def count_vowel(str): vowel = 0 for c in str: if c in ('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'): vowel = vowel + 1 return vowel ต่อมาฟังกช์ นั count_vowel() เป็นฟังกช์ นั สาหรับนบั จานวนสระใน String ฟังกช์ นั น้ีมหี น่ึง String พารามิเตอร์ ในการทางานของฟังกช์ นั น้นั เราใชค้ าส่ัง For loop ในการวนอ่านค่าทีละตวั อกั ษรเพื่อตรวจสอบวา่ เป็นสระ หรือไมด่ ว้ ยคาส่ัง in และตวั แปร vowel น้นั ใชส้ าหรับนบั จานวนสระที่พบใน String ในตอนทา้ ยเราไดส้ ่งค่าของ จานวนสระที่นบั ไดก้ ลบั ไปดว้ ยคาส่ัง return def area(width, height): c = width * height
return c และฟังกชนั สุดทา้ ยคือฟังกช์ นั area() เป็นฟังกช์ นั สาหรับหาพ้นื ท่ีของรูปส่ีเหล่ียมดา้ นขนาน และฟังกช์ นั มีพารามเิ ตอร์ สองตวั สาหรับความกวา้ งและความยาวของส่ีเหลี่ยม และฟังกช์ นั ทาการ return ผลลพั ธท์ ี่เป็นพ้นื ท่ีกลบั ไปดว้ ย คาส่ัง return การเรียกใชง้ านฟังกช์ นั ในภาษา Python หลงั จากเราไดส้ ร้างฟังกช์ นั ในตวั อยา่ งก่อนหนา้ แลว้ ต่อไปเราจะมาเรียกใชง้ านฟังกช์ นั เหล่าน้นั ในการเรียกใชฟ้ ังกช์ นั น้นั เรา จะใชช้ ่ือของฟังกช์ นั และส่งอาร์กิวเมนตใ์ หส้ อดคลอ้ งกบั พารามิเตอร์ท่ีกาหนดไวใ้ นฟังกช์ นั ดงั น้นั อาร์กิวเมนตค์ ือค่าท่ีส่งเขา้ ไปในฟังกช์ นั ตอนใชง้ าน ส่วนพารามิเตอร์น้นั คือตวั แปรทีกาหนดไวใ้ นฟังกช์ นั เพอ่ื รับค่าจากอาร์กิวเมนต์ มาดูตวั อยา่ งการ เรียกใชง้ านฟังกช์ นั ในภาษา Python def hello(name): print('Hello %s' % name) def count_vowel(str): vowel = 0 for c in str: if c in ('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'): vowel = vowel + 1 return vowel def area(width, height): c = width * height return c # calling functions hello('Danny')
hello('Mateo') print('Vowel in string = %d' % count_vowel('marcuscode.com')) print('Vowel in string = %d' % count_vowel('Python')) print('Area = %d' % area(8, 4)) ในตวั อยา่ ง เป็นการเรียกใชง้ านฟังกช์ นั ที่เราสร้างข้ึน เราไดเ้ รียกใชฟ้ ังกช์ นั hello() และส่งอาร์กิวเมนตท์ ี่เป็น String เขา้ ไปยงั ฟังกช์ นั เราเรียกใชฟ้ ังกช์ นั น้ีสองคร้ัง ซ่ึงนี่เองเป็นการ reuse โคด้ ในการเขียนโปรแกรม หลงั จากน้นั เราเรียกใชฟ้ ังกช์ นั count_vowel() และฟังกช์ นั area() และส่งพารามเิ ตอร์ที่ถูกตอ้ งไปยงั ฟังกช์ นั และ เพราะวา่ ฟังกช์ นั เหล่าน้ีมีการ return ค่ากลบั เราสามารถนาค่าเหลา่ น้ีไปใชง้ านไดต้ ่อไป เราไดน้ าไปใชก้ บั ฟังกช์ นั print() เพื่อจดั รูปแบบการแสดงผล Hello Danny Hello Mateo Vowel in string = 5 Vowel in string = 1 Area = 32 น่ีเป็นผลลพั ธ์การทางานของโปรแกรม จากการเรียกใชง้ านฟังกช์ นั ในภาษา Python Default Argument Values ในภาษา Python เราสามารถสร้างฟังกช์ นั โดยการกาหนด Default Argument ใหก้ บั ฟังกช์ นั พารามิเตอร์ได้ Default Argument เป็นการการกาหนดค่าเริ่มตน้ ใหก้ บั อาร์กิวเมนตท์ ่ีส่งเขา้ มายงั ฟังกช์ นั นน่ั ทาใหเ้ ราสามารถ เรียกใชง้ านฟังกช์ นั โดยการส่งอาร์กิวเมนตน์ อ้ ยกวา่ จานวนที่กาหนดไวใ้ นฟังกช์ นั ได้ ซ่ึงอานวยความสะดวกในการใชง้ านมาก ข้ึน มาดูตวั อยา่ งการสร้างและใชง้ านฟังกช์ นั กบั Default Argument def show_info(name, salary = 84360, lang = \"Python\"): print('Name: %s' % name)
print('Salary: %d' % salary) print('Language: %s' % lang) print() ในตวั อยา่ ง เราไดส้ ร้างฟังกช์ นั show_info() สาหรับแสดงขอ้ มลู ของโปรแกรมเมอร์ ขอ้ มูลที่จาเป็นตอ้ งการจะแสดงน้นั มีช่ือ เงินเดือน และภาษาท่ีเขียน ในฟังกช์ นั ของเราน้นั มี 3 พารามเิ ตอร์ พารามเิ ตอร์แรก name น้นั เป็นพารามิเตอร์แบบปกติ และสองพารามิเตอร์น้นั เป็น Default Argument ซ่ึงเรากาหนดค่าเริ่มตน้ ใหก้ บั พารามิเตอร์โดยใชเ้ คร่ืองหมาย = ใน การกาหนดพารามิเตอร์น้นั Default Argument ตอ้ งอยหู่ ลงั พารามิเตอร์แบบปกติเสมอ # calling function show_info('Mateo') show_info('Mateo', 105000) show_info('Danny', 120000, 'Java') ในการเรียกใชง้ านฟังกช์ นั น้นั เราตอ้ งทาการส่งค่าอาร์กิวเมนตส์ าหรับพารามิเตอร์แบบปกติเสมอ ส่วนพารามเิ ตอร์แบบ Default Argument น้นั เป็นทางเลือก ในตวั อยา่ ง คาสั่งเราเรียกใชฟ้ ังกช์ นั โดยอาร์กิวเมนตเ์ พียงหน่ึงตวั เขา้ ไป ทาให้ สองอาร์กิวเมนตท์ ่ีเหลือท่ีเป็น Default Argument ใชค้ ่าเร่ิมตน้ ของมนั แทน คือ 84360 สาหรับเงินเดือน และ \"Python\" สาหรับภาษาเขียนโปรแกรม ต่อมาเราเรียกใชฟ้ ังกช์ นั โดยการส่งสองอาร์กิวเมนตเ์ ขา้ ไป ทาใหม้ ีเพียงพารามิเตอร์สุดทา้ ยเท่าน้นั ท่ีใชค้ ่าเริ่มตน้ และในคาสั่ง สุดทา้ ยเป็นการส่งค่าครบจานวนใหก้ บั ทุกอาร์กิวเมนต์ Name: Mateo Salary: 84360 Language: Python Name: Mateo Salary: 105000 Language: Python
Name: Danny Salary: 120000 Language: Java นี่เป็นผลลพั ธ์การทางานของโปรแกรม ในการเรียกใชง้ านฟังกช์ นั กบั Default Argument Keyword Arguments ในภาษา Python เราสามารถเรียกใชง้ านฟังกช์ นั ในรูปแบบของ Keyword Argument โดยการใชช้ ื่อของ พารามิเตอร์สาหรับส่งอาร์กิวเมนต์ ในการใชง้ านน้นั พารามิเตอร์ตอ้ งมีการกาหนดในรูปแบบของ Default Argument ก่อน มาดูตวั อยา่ งการใชง้ าน Keyword Arguments ในภาษา Python def create_button(id, color = '#ffffff', text = 'Button', size = 16): print('Button ID: %d' % id) print('Attributes:') print('Color: %s' % color) print('Text: %s' % text) print('Size: %d px' % size) print() create_button(10) create_button(11, color = '#4286f4', text = 'Sign up') create_button(id = 12, color = '#323f54', size = 24) create_button(color = '#1cb22b', text = 'Log in', size = 32, id = 13) ในตวั อยา่ ง เราไดส้ ร้างฟังกช์ นั สาหรับการสร้างป่ ุม ในการเรียกใชง้ านฟังกช์ นั น้นั เราสามารถเรียกโดยวธิ ีการส่งแบบ Keyword Argument ไดใ้ นรูปแบบของ argument = value และสามารถสลบั ตาแหน่งของอาร์กิวเมนต์ ได้ และในฟังกช์ นั น้นั เรามอี าร์กิวเมนต์ id ซ่ึงเป็นอาร์กิวเมนตแ์ บบปกติ สาหรับอาร์กิวเมนตแ์ บบปกติในการส่งค่าน้นั ตอ้ งส่ง
เป็นลาดบั แรกเสมอ เหมอื นในคาส่ังการเรียกใชง้ านสองคาส่ังแรก หรือสามารถส่งแบบ Keyword Argument กไ็ ด้ เช่นกนั เหมือนในคาสั่งท่ีสามและสี่ Button ID: 10 Attributes: Color: #ffffff Text: Button Size: 16 px Button ID: 11 Attributes: Color: #4286f4 Text: Sign up Size: 16 px Button ID: 12 Attributes: Color: #323f54 Text: Button Size: 24 px Button ID: 13 Attributes: Color: #1cb22b Text: Log in Size: 32 px นี่เป็นผลลพั ธ์การทางานของโปรแกรม เราไดเ้ รียกใชง้ านฟังกช์ นั เพอื่ สร้างป่ ุม 4 ป่ ุมในรูปแบบต่างๆ ของการใช้ Keyword Argument
ตวั อยา่ งของฟังกช์ นั ท่ีมกี ารใชง้ านในรูปแบบของ Keyword Argument กค็ ือ ฟังกช์ นั print() เราสามารถ เปล่ียนตวั คน่ั ระหวา่ งอาร์กิวเมนต์ และการแสดงผลลพั ธ์ในตอนทา้ ยของฟังกช์ นั ได้ โดยการใช้ Keyword sep และ end ตามลาดบั print(1, 2, 3) print(1, 2, 3, sep = '-', end = '/') Lambda Expressions Lambda Expressions คือ anonymous function ท่ีเป็นฟังกช์ นั ท่ีมกี ารทางานขนาดเลก็ อยภู่ ายในท่ี สามารถมไี ดเ้ พียง Expression เดียวเท่าน้นั เราสามารถสร้างโดยใชค้ าสั่ง lambda เราสามารถใช้ Lambda Expressions สร้างออบเจค็ ของฟังกช์ นั ได้ และค่า return จะเป็นค่าที่ไดจ้ ากผลลพั ธ์ของ Expression ของ ฟังกช์ นั มาดูตวั อยา่ งการใชง้ าน f = lambda x: x + 1 print(f(2)) print(f(8)) g = lambda a, b: (a + b) / 2 print(g(3, 5)) print(g(10, 33)) def make_incrementor(n): return lambda x: x + n f = make_incrementor(13) print(f(0)) print(f(1)) print(f(5))
ในตวั อยา่ ง เราไดส้ ร้าง Lambda Expressions เป็นจานวนสามฟังกช์ นั ฟังกช์ นั แรกเป็นฟังกช์ นั สาหรับเพ่มิ ตวั เลข ข้ึน 1 และฟังกช์ นั ท่ีสองเป็นฟังกช์ นั สาหรับหาค่าเฉลี่ยของตวั เลขสองจานวน คุณจะสังเกตไดว้ า่ ฟังกช์ นั แรกน้นั มี 1 อาร์กิวเมนตแ์ ละฟังกช์ นั ที่สองน้นั มี 2 อาร์กิวเมนต์ และฟังกช์ นั สุดทา้ ยน้นั เป็นการ return ฟังกช์ นั กลบั ภายในฟังกช์ นั อีก ที และเป็นฟังกช์ นั สาหรับเพิ่มตวั เลขข้ึนจานวน n จากอาร์กิวเมนตท์ ่ีใส่เขา้ ไป 3 9 4.0 21.5 13 14 18 น่ีเป็นผลลพั ธ์การทางานของโปรแกรม นอกจากน้ี Lambda Expressions ยงั มปี ระโยชนเ์ พ่ือใชง้ านกบั built-in function เช่น ฟังกช์ นั filter() และฟังกช์ นั map() ในภาษา Python มนั ใชเ้ ป็นอาร์กิวเมนตส์ ่งเขา้ ไปในฟังกช์ นั เพ่ือสร้าง Expression ใหก้ บั ฟังกช์ นั มาดูตวั อยา่ งการใชง้ าน numbers = [2, 15, 5, 7, 10, 3, 28, 30] print(list(filter(lambda x: x % 5 == 0, numbers))) print(list(map(lambda x: x * 2, numbers))) ในตวั อยา่ ง เรามลี ิสตข์ องตวั เลข Integer และเราไดใ้ ชฟ้ ังกช์ นั filter() และฟังกช์ นั map() ซ่ึงเป็นฟังกช์ นั ท่ีมี อาร์กิวเมนตต์ วั แรกเป็นฟังกช์ นั และตวั ท่ีสองเป็นลิสต์ ในการทางานของฟังกช์ นั filter() เราไดใ้ ชฟ้ ังกช์ นั กรองเอาตวั เลขท่ีตรงกนั กบั Lambda Expressions ซ่ึงกค็ ือตวั เลขในลิสตท์ ี่หารดว้ ย 5 ลงตวั และในการใช้ ฟังกช์ นั map() เป็นการเชื่อมโยงค่าในลิสตใ์ หต้ รงกบั Lambda Expressions คือการเพิ่มตวั เลขใหเ้ ป็นสองเท่า ซ่ึงท้งั สองฟังกช์ นั น้ีส่งค่ากลบั เป็นออบเจค็ และเราใชฟ้ ังกช์ นั list() เพอ่ื แปลงออบเจค็ ใหเ้ ป็นสิสต์ [15, 5, 10, 30]
[4, 30, 10, 14, 20, 6, 56, 60] น่ีเป็นผลลพั ธ์การทางานของโปรแกรม ในบทน้ี คุณไดเ้ รียนรู้เก่ียวกบั การสร้างและใชง้ านฟังกช์ นั ในภาษา Python และการเรียกใชฟ้ ังกช์ นั ในรูปแบบอ่ืนๆ เช่น Default Argument และ Keyword Argument และนอกจากน้ีเรายงั แนะนาใหค้ ุณรู้จกั กบั การใชง้ าน Lambda Expressions เพอ่ื สร้างฟังกช์ นั ขนาดเลก็ แต่ช่วยอานวยความสะดวกในการทางานเป็นอยา่ งมาก และ แนะนาใหค้ ุณรู้จกั กบั built-in function
Search
Read the Text Version
- 1 - 11
Pages: