ผลต่างระหว่างรุ่นของ "Python Programming/Functions"
Cardcaptor (คุย | มีส่วนร่วม) (สร้างหน้าใหม่: ไพทอนมีฟังก์ชันสำเร็จรูปที่สามารถที่สามารถเรียกใช้ได...) |
Chaiporn (คุย | มีส่วนร่วม) |
||
(ไม่แสดง 22 รุ่นระหว่างกลางโดยผู้ใช้ 3 คน) | |||
แถว 1: | แถว 1: | ||
− | + | == ฟังก์ชันพร้อมใช้ == | |
+ | ไพทอนมีที่สามารถที่สามารถเรียกใช้ได้เลยอยู่หลายฟังก์ชัน ไวยากรณ์การเรียกฟังก์ชันของภาษาไพธอนเหมือนกับภาษา C และ Java กล่าวคือเขียนชื่อฟังก์ชันแล้วตามด้วยวงเล็บเปิด แล้วใส่ parameter ซึ่งถ้า parameter มีหลายตัวก็ให้คั่น parameter ที่อยู่ติดกันด้วยเครื่องหมายคอมมา (,) แล้วตามด้วยวงเล็บปิด เช่น โค้ดตัวอย่างต่อไปนี้เรียกใช้ฟังก์ชัน <tt>abs(x)</tt> ซึ่งคืนค่าสัมบูรณ์ของ <tt>x</tt> ที่ป้อนให้ | ||
<pre title="interpreter"> | <pre title="interpreter"> | ||
>>> abs(-10) | >>> abs(-10) | ||
แถว 22: | แถว 23: | ||
</pre> | </pre> | ||
== ฟังก์ชันในไลบรารีภาษาไพทอน == | == ฟังก์ชันในไลบรารีภาษาไพทอน == | ||
− | ไลบรารีของภาษาไพทอนยังมีฟังก์ชันอื่นๆ ให้ใช้อีกมากมาย โดยที่ฟังก์ชันเหล่านี้จะถูกแบ่งจัดเก็บอยู่ใน '''โมดูล (module)''' หลายๆ โมดูล โดยก่อนที่เราจะสามารถนำฟังก์ชันเหล่านี้มาใช้ได้เราจะต้องทำการ "นำเข้า" โมดูลที่เก็บฟังก์ชันนั้นไว้ คำสั่ง <tt>import</tt> | + | ไลบรารีของภาษาไพทอนยังมีฟังก์ชันอื่นๆ ให้ใช้อีกมากมาย โดยที่ฟังก์ชันเหล่านี้จะถูกแบ่งจัดเก็บอยู่ใน '''โมดูล (module)''' หลายๆ โมดูล โดยก่อนที่เราจะสามารถนำฟังก์ชันเหล่านี้มาใช้ได้เราจะต้องทำการ "นำเข้า" โมดูลที่เก็บฟังก์ชันนั้นไว้ คำสั่ง <tt>import</tt> เป็นคำสั่งที่ใช้ในการนำเข้าโมดูลหรือฟังก์ชันที่อยู่ในโมดูลต่างๆ โดยมันมีไวยากรณ์ดังต่อไปนี้ |
<pre> | <pre> | ||
import <<ชื่อโมดูล>> | import <<ชื่อโมดูล>> | ||
</pre> | </pre> | ||
− | ยกตัวอย่างเช่น | + | ยกตัวอย่างเช่น ถ้าเราต้องการใช้ฟังก์ชันในโมดูลชื่อ <tt>math</tt> ซึ่งเก็บฟังก์ชันทางคณิตศาสตร์ต่างๆ ไว้มากมาย เราก็จะสั่ง |
<pre title="interpreter"> | <pre title="interpreter"> | ||
import math | import math | ||
</pre> | </pre> | ||
+ | หลังจากสั่ง import แล้วเราก็สามารถเรียกใชัฟังก์ชันต่างๆ ในโมดูล <tt>math</tt> ได้โดยอ้างชื่อ <tt>math.</tt><<ชื่อฟังก์ชัน>> ยกตัวอย่างเช่น | ||
+ | <pre title="interpreter"> | ||
+ | >>> math.sqrt(2) | ||
+ | 1.4142135623730951 | ||
+ | >>> math.exp(1) | ||
+ | 2.7182818284590451 | ||
+ | >>> math.exp(2) | ||
+ | 7.3890560989306504 | ||
+ | >>> math.log(10) | ||
+ | 2.3025850929940459 | ||
+ | >>> math.log(8, 2) | ||
+ | 3.0 | ||
+ | </pre> | ||
+ | โมดูลที่นำเข้าอาจมีชื่อที่ยาวและไม่สะดวกในการใช้งาน คำสั่ง <tt>import</tt> รองรับคีย์เวิร์ด <tt>as</tt> เพื่อนำเข้าโมดูลพร้อมกับตั้งชื่อให้ใหม่ในรูปแบบ | ||
+ | <pre> | ||
+ | import <<ชื่อโมดูล>> as <<ชื่อใหม่>> | ||
+ | </pre> | ||
+ | เช่น | ||
+ | <pre title="interpreter"> | ||
+ | import math as m | ||
+ | </pre> | ||
+ | เป็นการนำเข้าโมดูล <tt>math</tt> แต่เปลี่ยนชื่อการอ้างถึงผ่านตัวแปร <tt>m</tt> ซึ่งสามารถเรียกใช้งานค่าคงที่และฟังก์ชันภายในได้ตามปกติ เช่น <tt>m.exp()</tt> หรือ <tt>math.log()</tt> | ||
+ | |||
+ | โมดูล <tt>math</tt> นอกจากจะเก็บฟังก์ชันทางคณิตศาสตร์แล้วยังเก็บค่าคงที่ทางคณิตศาสตร์เช่นค่าพายและค่า e เอาไว้ด้วย | ||
+ | <pre title="interpreter"> | ||
+ | >>> math.pi | ||
+ | 3.1415926535897931 | ||
+ | >>> math.e | ||
+ | 2.7182818284590451 | ||
+ | >>> math.sin(math.pi / 2) | ||
+ | 1.0 | ||
+ | </pre> | ||
+ | คุณสามารถดูฟังก์ชันและค่าคงที่ทางคณิตศาสตร์ทั้งหมดในโมดูล <tt>math</tt> ได้ที่นี่: [http://www.python.org/doc/2.5.2/lib/module-math.html 6.1 math -- Mathematical functions] | ||
+ | |||
+ | == โมดูล random == | ||
+ | โมดูลที่มีประโยชน์มากโมดูลหนึ่งคือโมดูล <tt>random</tt> ซึ่งมีไว้สำหรับสร้างเลขสุ่ม โดยมีฟังก์ชัน <tt>random.random()</tt> ไว้สำหรับสร้างเลขทศนิยมสุ่มที่มีค่าตั้งแต่ 0 ถึง 1 | ||
+ | <pre title="interpreter"> | ||
+ | >>> random.random() | ||
+ | 0.32533822221341258 | ||
+ | >>> random.random() | ||
+ | 0.49424946832897176 | ||
+ | >>> random.random() | ||
+ | 0.95364871658603856 | ||
+ | </pre> | ||
+ | สังเกตว่าการเรียกฟังก์ชัน <tt>random.random()</tt> แต่ละครั้งจะให้ผลลัพธ์ต่างกัน และเมื่อคุณนำโค้ดข้างบนไป run บนเครื่องของตนเองก็จะได้ผลลัพธ์ต่างออกไปจากที่เขียนไว้นี้ | ||
+ | |||
+ | ฟังก์ชันที่มีประโยชน์อีกฟังก์ชันหนึ่งคือฟังก์ชัน <tt>random.randint(a,b)</tt> ซึ่งจะสุ่มเลขจำนวนเต็มออกมาหนึ่งตัวโดยที่เลขจำนวนเต็มนั้นจะีมีค่าตั้งแต่ a ถึง b โดยรวม a และ b ด้วย | ||
+ | <pre title="interpreter"> | ||
+ | >>> random.randint(1, 10) | ||
+ | 1 | ||
+ | >>> random.randint(1, 10) | ||
+ | 9 | ||
+ | >>> random.randint(1, 10) | ||
+ | 10 | ||
+ | >>> random.randint(1, 10) | ||
+ | 5 | ||
+ | </pre> | ||
+ | |||
+ | เราสามารถกำหนด seed ของ random number generator ได้ด้วยฟังก์็ชัน <tt>random.seed(x)</tt> โดยค่า x ที่ให้จะต้องเป็นจำนวนเต็ม | ||
+ | <pre title="interpreter"> | ||
+ | >>> random.random() | ||
+ | 0.63942679845788375 | ||
+ | >>> random.random() | ||
+ | 0.025010755222666936 | ||
+ | >>> random.seed(398) | ||
+ | >>> random.random() | ||
+ | 0.93033562902743527 | ||
+ | >>> random.random() | ||
+ | 0.42786425528137961 | ||
+ | >>> random.seed(42) | ||
+ | >>> random.random() | ||
+ | 0.63942679845788375 | ||
+ | >>> random.random() | ||
+ | 0.025010755222666936 | ||
+ | </pre> | ||
+ | |||
+ | อนึ่ง ถ้าเราเรียก <tt>random.seed()</tt> โดยไม่ใส่ parameter อะไรเลย ตัวแปรภาษาไพทอนจะไปอ่านสัญญาณนาฬิกา ณ เวลาปัจจุบัน หรือแหล่งเลขสุ่มอื่นๆ ของระบบปฏืบัติการมาใช้เป็น random seed ให้ | ||
+ | <pre title="interpreter"> | ||
+ | >>> random.seed() | ||
+ | >>> random.random() | ||
+ | 0.22619089101719203 | ||
+ | >>> random.random() | ||
+ | 0.33050349201012796 | ||
+ | >>> random.seed() | ||
+ | >>> random.random() | ||
+ | 0.79150249225025138 | ||
+ | >>> random.random() | ||
+ | 0.34516180688913967 | ||
+ | </pre> | ||
+ | |||
+ | คุณสามารถดูรายละเอียดของฟังก์ชันอื่นๆ ในโมดูล random ได้ที่นี่: [http://www.python.org/doc/2.5.2/lib/module-random.html 6.4 random -- Generate pseudo-random numbers] | ||
+ | |||
+ | == การเลือก import ทีละฟังก์ชัน == | ||
+ | บางครั้งเราอาจจะต้องการเรียกใช้ฟังก์ชันและค่าคงที่ต่างๆ ในโมดูลโดยไม่ต้องพิมพ์ชื่อโมดูลก่อน เช่น เราอาจอยากเรียนใช้ฟังก์ชัน <tt>math.sqrt(x)</tt> โดยไม่ต้องพิมพ์ <tt>math.</tt> เป็นต้น เราสามารถสั่งให้ตัวแปรภาษาไพทอน import ฟังก์ชันใดฟังก์ชันหนึ่งมาเพื่อให้เราใช้ได้อย่างสะดวกได้ด้วยคำสั่ง | ||
+ | from <<ชื่อโมดูล>> import <<ชื่อฟังก์ชัน>> | ||
+ | เช่น | ||
+ | <pre title="interpreter"> | ||
+ | >>> from math import sqrt | ||
+ | >>> sqrt(2) | ||
+ | 1.4142135623730951 | ||
+ | >>> sqrt(3) | ||
+ | 1.7320508075688772 | ||
+ | >>> sqrt(4) | ||
+ | 2.0 | ||
+ | </pre> | ||
+ | คำสั่ง <tt>from</tt> รองรับคีย์เวิร์ด <tt>as</tt> เช่นกัน | ||
+ | from <<ชื่อโมดูล>> import <<ชื่อฟังก์ชัน>> as <<ชื่อใหม่>> | ||
+ | นอกจากนี้ เรายังสามารถ import ฟังก์ชันและตัวแปรจากโมดูลหนึ่งๆ มาทีละหลายๆ ตัวได้โดยการเขียนรายการของฟังก์ชันที่เราต้องการ import และคั่นฟังก์ชันที่อยู่ติดกันด้วยคอมมา (,) | ||
+ | <pre title="interpreter"> | ||
+ | >>> from math import sin, cos, pi | ||
+ | >>> sin(pi/2) + cos(pi/2) | ||
+ | 1.0 | ||
+ | >>> sin(pi/3) | ||
+ | 0.8660254037844386 | ||
+ | >>> cos(pi/4) | ||
+ | 0.70710678118654757 | ||
+ | </pre> | ||
+ | ถ้าต้องการ import ทุกฟังก์ชัน ตัวแปร และค่าคงที่ในโมดูล ให้สั่ง | ||
+ | from <<ชื่อโมดูล>> import * | ||
+ | เช่น | ||
+ | <pre title="interpreter"> | ||
+ | >>> from random import * | ||
+ | >>> random() | ||
+ | 0.39427634568453784 | ||
+ | >>> randint(1,100) | ||
+ | 51 | ||
+ | >>> seed(42) | ||
+ | >>> random() | ||
+ | 0.63942679845788375 | ||
+ | </pre> | ||
+ | {{Python Programming/Navigation|Variables and Assignments|User-Defined Functions}} |
รุ่นแก้ไขปัจจุบันเมื่อ 09:01, 27 ตุลาคม 2557
เนื้อหา
ฟังก์ชันพร้อมใช้
ไพทอนมีที่สามารถที่สามารถเรียกใช้ได้เลยอยู่หลายฟังก์ชัน ไวยากรณ์การเรียกฟังก์ชันของภาษาไพธอนเหมือนกับภาษา C และ Java กล่าวคือเขียนชื่อฟังก์ชันแล้วตามด้วยวงเล็บเปิด แล้วใส่ parameter ซึ่งถ้า parameter มีหลายตัวก็ให้คั่น parameter ที่อยู่ติดกันด้วยเครื่องหมายคอมมา (,) แล้วตามด้วยวงเล็บปิด เช่น โค้ดตัวอย่างต่อไปนี้เรียกใช้ฟังก์ชัน abs(x) ซึ่งคืนค่าสัมบูรณ์ของ x ที่ป้อนให้
>>> abs(-10) 10 >>> abs(0) 0 >>> abs(10.5) 10.5
ฟังก์ชัน pow(x,y) ซึ่งคือค่า x ยกกำลัง y ซึ่งสามารถใช้แทน x**y ได้
>>> pow(2, 16) 65536 >>> pow(5, 0.5) 2.2360679774997898 >>> pow(5, -2) 0.040000000000000001 >>> pow(2, pow(2, 2)) 16 >>> pow(abs(-3), 1-abs(-1)) 1
ฟังก์ชันในไลบรารีภาษาไพทอน
ไลบรารีของภาษาไพทอนยังมีฟังก์ชันอื่นๆ ให้ใช้อีกมากมาย โดยที่ฟังก์ชันเหล่านี้จะถูกแบ่งจัดเก็บอยู่ใน โมดูล (module) หลายๆ โมดูล โดยก่อนที่เราจะสามารถนำฟังก์ชันเหล่านี้มาใช้ได้เราจะต้องทำการ "นำเข้า" โมดูลที่เก็บฟังก์ชันนั้นไว้ คำสั่ง import เป็นคำสั่งที่ใช้ในการนำเข้าโมดูลหรือฟังก์ชันที่อยู่ในโมดูลต่างๆ โดยมันมีไวยากรณ์ดังต่อไปนี้
import <<ชื่อโมดูล>>
ยกตัวอย่างเช่น ถ้าเราต้องการใช้ฟังก์ชันในโมดูลชื่อ math ซึ่งเก็บฟังก์ชันทางคณิตศาสตร์ต่างๆ ไว้มากมาย เราก็จะสั่ง
import math
หลังจากสั่ง import แล้วเราก็สามารถเรียกใชัฟังก์ชันต่างๆ ในโมดูล math ได้โดยอ้างชื่อ math.<<ชื่อฟังก์ชัน>> ยกตัวอย่างเช่น
>>> math.sqrt(2) 1.4142135623730951 >>> math.exp(1) 2.7182818284590451 >>> math.exp(2) 7.3890560989306504 >>> math.log(10) 2.3025850929940459 >>> math.log(8, 2) 3.0
โมดูลที่นำเข้าอาจมีชื่อที่ยาวและไม่สะดวกในการใช้งาน คำสั่ง import รองรับคีย์เวิร์ด as เพื่อนำเข้าโมดูลพร้อมกับตั้งชื่อให้ใหม่ในรูปแบบ
import <<ชื่อโมดูล>> as <<ชื่อใหม่>>
เช่น
import math as m
เป็นการนำเข้าโมดูล math แต่เปลี่ยนชื่อการอ้างถึงผ่านตัวแปร m ซึ่งสามารถเรียกใช้งานค่าคงที่และฟังก์ชันภายในได้ตามปกติ เช่น m.exp() หรือ math.log()
โมดูล math นอกจากจะเก็บฟังก์ชันทางคณิตศาสตร์แล้วยังเก็บค่าคงที่ทางคณิตศาสตร์เช่นค่าพายและค่า e เอาไว้ด้วย
>>> math.pi 3.1415926535897931 >>> math.e 2.7182818284590451 >>> math.sin(math.pi / 2) 1.0
คุณสามารถดูฟังก์ชันและค่าคงที่ทางคณิตศาสตร์ทั้งหมดในโมดูล math ได้ที่นี่: 6.1 math -- Mathematical functions
โมดูล random
โมดูลที่มีประโยชน์มากโมดูลหนึ่งคือโมดูล random ซึ่งมีไว้สำหรับสร้างเลขสุ่ม โดยมีฟังก์ชัน random.random() ไว้สำหรับสร้างเลขทศนิยมสุ่มที่มีค่าตั้งแต่ 0 ถึง 1
>>> random.random() 0.32533822221341258 >>> random.random() 0.49424946832897176 >>> random.random() 0.95364871658603856
สังเกตว่าการเรียกฟังก์ชัน random.random() แต่ละครั้งจะให้ผลลัพธ์ต่างกัน และเมื่อคุณนำโค้ดข้างบนไป run บนเครื่องของตนเองก็จะได้ผลลัพธ์ต่างออกไปจากที่เขียนไว้นี้
ฟังก์ชันที่มีประโยชน์อีกฟังก์ชันหนึ่งคือฟังก์ชัน random.randint(a,b) ซึ่งจะสุ่มเลขจำนวนเต็มออกมาหนึ่งตัวโดยที่เลขจำนวนเต็มนั้นจะีมีค่าตั้งแต่ a ถึง b โดยรวม a และ b ด้วย
>>> random.randint(1, 10) 1 >>> random.randint(1, 10) 9 >>> random.randint(1, 10) 10 >>> random.randint(1, 10) 5
เราสามารถกำหนด seed ของ random number generator ได้ด้วยฟังก์็ชัน random.seed(x) โดยค่า x ที่ให้จะต้องเป็นจำนวนเต็ม
>>> random.random() 0.63942679845788375 >>> random.random() 0.025010755222666936 >>> random.seed(398) >>> random.random() 0.93033562902743527 >>> random.random() 0.42786425528137961 >>> random.seed(42) >>> random.random() 0.63942679845788375 >>> random.random() 0.025010755222666936
อนึ่ง ถ้าเราเรียก random.seed() โดยไม่ใส่ parameter อะไรเลย ตัวแปรภาษาไพทอนจะไปอ่านสัญญาณนาฬิกา ณ เวลาปัจจุบัน หรือแหล่งเลขสุ่มอื่นๆ ของระบบปฏืบัติการมาใช้เป็น random seed ให้
>>> random.seed() >>> random.random() 0.22619089101719203 >>> random.random() 0.33050349201012796 >>> random.seed() >>> random.random() 0.79150249225025138 >>> random.random() 0.34516180688913967
คุณสามารถดูรายละเอียดของฟังก์ชันอื่นๆ ในโมดูล random ได้ที่นี่: 6.4 random -- Generate pseudo-random numbers
การเลือก import ทีละฟังก์ชัน
บางครั้งเราอาจจะต้องการเรียกใช้ฟังก์ชันและค่าคงที่ต่างๆ ในโมดูลโดยไม่ต้องพิมพ์ชื่อโมดูลก่อน เช่น เราอาจอยากเรียนใช้ฟังก์ชัน math.sqrt(x) โดยไม่ต้องพิมพ์ math. เป็นต้น เราสามารถสั่งให้ตัวแปรภาษาไพทอน import ฟังก์ชันใดฟังก์ชันหนึ่งมาเพื่อให้เราใช้ได้อย่างสะดวกได้ด้วยคำสั่ง
from <<ชื่อโมดูล>> import <<ชื่อฟังก์ชัน>>
เช่น
>>> from math import sqrt >>> sqrt(2) 1.4142135623730951 >>> sqrt(3) 1.7320508075688772 >>> sqrt(4) 2.0
คำสั่ง from รองรับคีย์เวิร์ด as เช่นกัน
from <<ชื่อโมดูล>> import <<ชื่อฟังก์ชัน>> as <<ชื่อใหม่>>
นอกจากนี้ เรายังสามารถ import ฟังก์ชันและตัวแปรจากโมดูลหนึ่งๆ มาทีละหลายๆ ตัวได้โดยการเขียนรายการของฟังก์ชันที่เราต้องการ import และคั่นฟังก์ชันที่อยู่ติดกันด้วยคอมมา (,)
>>> from math import sin, cos, pi >>> sin(pi/2) + cos(pi/2) 1.0 >>> sin(pi/3) 0.8660254037844386 >>> cos(pi/4) 0.70710678118654757
ถ้าต้องการ import ทุกฟังก์ชัน ตัวแปร และค่าคงที่ในโมดูล ให้สั่ง
from <<ชื่อโมดูล>> import *
เช่น
>>> from random import * >>> random() 0.39427634568453784 >>> randint(1,100) 51 >>> seed(42) >>> random() 0.63942679845788375
หน้าก่อน: Variables and Assignments | สารบัญ | หน้าต่อไป: User-Defined Functions |