ผลต่างระหว่างรุ่นของ "Python Programming/User-Defined Functions"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 40: แถว 40:
 
</pre>
 
</pre>
  
ถ้าฟังก์ชันที่เราต้องการนิยามมีหลายคำสั่ง คำสั่งทุกคำสั่งจะต้องเยื้องจากตำแหน่งของ <tt>def</tt> มาเป็นระยะเท่าๆ กัน
+
ถ้าฟังก์ชันที่เราต้องการนิยามมีหลายคำสั่ง คำสั่งทุกคำสั่งจะต้องเยื้องจากตำแหน่งของ <tt>def</tt> มาเป็นระยะเท่าๆ กัน เช่น
 +
<pre title="interpreter">
 +
>>> def length(x0, y0, x1, y1):
 +
return math.sqrt((x0-x1)**2 + (y0-y1)**2)
 +
 
 +
>>> def triangle_area(xA, yA, xB, yB, xC, yC):
 +
a = length(xA, yA, xB, yB)
 +
b = length(xB, yB, xC, yC)
 +
c = length(xC, yC, xA, yA)
 +
s = (a+b+c)/2
 +
return math.sqrt(s*(s-a)*(s-b)*(s-c))
 +
</pre>
  
 
{{Python Programming/Navigation|Functions|Print Command}}
 
{{Python Programming/Navigation|Functions|Print Command}}

รุ่นแก้ไขเมื่อ 08:24, 16 ตุลาคม 2551

ผู้ใช้ภาษาไพทอนสามารถเขียนฟังก์ชันขึ้นมาเองได้ โดยใช้คำสั่ง def ซึ่งมีไวยากรณ์ดังต่อไปนี้

def <<ชื่อฟังก์ชัน>>(<<รายชื่อ parameter>>):
    คำสั่ง 1
    คำสั่ง 2
    คำสั่ง 3
      .
      .
      .

โดยในตัวของฟังก์ชันเอง เราช้คำสั่ง return เพื่อบอกให้ฟังก์ชันคืนค่่าที่เรากำหนดให้ คำสั่ง return มีรูปแบบดังต่อไปนี้

return <<นิพจน์>>

ยกตัวอย่างเช่น ถ้าเราจะประกาศฟังก์ชัน square(x) ซึ่งคืนค่า x ยกกำลังสอง ก็สามารถทำได้ดังนี้

>>> def square(x):
	return x**2

หลังจากประกาศฟังก์ชันแล้ว เราก็สามารถนำมันไปใช้ได้เหมือนฟังก์ชันพร้อมใช้ของไพทอนหรือฟังก์ชันที่ import มาจากโมดูลต่างๆ

>>> square(100)
10000
>>> square(1+2)
9
>>> square(0.5)
0.25
>>> square(square(1.25))
2.44140625

ในกรณีที่ฟังก์ชันที่ต้องการประกาศมี parameter มากกว่าหนึ่งตัว ให้ใช้คอมมา (,) คั่นระหว่าง parameter แต่ละตัว ยกตัวอย่างเช่นฟังก์ชัน lerp(a,b,x) (lerp ย่อมาจาก linear interpolation) ซึ่งคำนวณค่า a(1-x) + bx

>>> def lerp(a,b,x):
	return a*(1-x) + b*x

>>> lerp(0,2,0.5)
1.0
>>> lerp(7,8,0.25)
7.25
>>> lerp(0,100,1)
100

ถ้าฟังก์ชันที่เราต้องการนิยามมีหลายคำสั่ง คำสั่งทุกคำสั่งจะต้องเยื้องจากตำแหน่งของ def มาเป็นระยะเท่าๆ กัน เช่น

>>> def length(x0, y0, x1, y1):
	return math.sqrt((x0-x1)**2 + (y0-y1)**2)

>>> def triangle_area(xA, yA, xB, yB, xC, yC):
	a = length(xA, yA, xB, yB)
	b = length(xB, yB, xC, yC)
	c = length(xC, yC, xA, yA)
	s = (a+b+c)/2
	return math.sqrt(s*(s-a)*(s-b)*(s-c))
หน้าก่อน: Functions สารบัญ หน้าต่อไป: Print Command