Function

Function 是一段可重複使用的程式碼,方便管理、維護已經寫好的程式工具。

而Python中有很多built-in functions像是print(),而你也可以自己創造function,稱做user-defined functions

Defining a Function

規則 :

  • Function block 以 def 做開頭,後面緊跟著Function名稱、小括弧()與:

  • 小括弧中放入所有從主程式傳入的變數

  • 必須要在一個block裡寫完(最左側對齊縮排)

  • 如果有要回傳給主程式的變數或運算結果,寫在最後一行的return(要縮排)

In [1]:
def functionname( parameters ):
    """
    message shown when querying this function with help()
    """
    #statement1
    #statement2
    #...
    return [expression]

Example 1

一個可以將攝氏溫度轉換成華氏溫度的自訂函數 converting Celcius temperature to Fahrenheit

In [2]:
# user-defined function converting deg-C to deg-F
def CtoF(Tc):
    Tf= 32+(Tc*9/5)
    return Tf
In [3]:
# main program
Tc=100
print(Tc,'deg-C = ',CtoF(Tc),'deg-F')
100 deg-C =  212.0 deg-F

Example 2

解二元一次方程式

solve $ax^2+bx+c=0$ $\rightarrow$ $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$

In [4]:
# user-defined function: quadratic formula
def quadf(a,b,c):
    """
    Given the coefficients a, b, c, returns the solution of 
    the quatratic equation a*x^2+b*x+c=0
    For example:quadf(a,b,c) 
    """
    return [(-b+(b**2-4*a*c)**0.5)/(2*a),(-b-(b**2-4*a*c)**0.5)/(2*a)]
In [5]:
# main program: solve i*x^2+j*x+k=0
i=1.0
j=2.0
k=-3.0
x=quadf(i,j,k)
print(x)
[1.0, -3.0]
In [6]:
help(quadf)
Help on function quadf in module __main__:

quadf(a, b, c)
    Given the coefficients a, b, c, returns the solution of 
    the quatratic equation a*x^2+b*x+c=0
    For example:quadf(a,b,c)

How to use a function stored in a separate .py file?

前面的例子,自訂函數跟主程式是寫在同一個py檔中,用def與縮排區隔。 如果想要讓自訂函數可以被其他的py檔使用,要利用import的方式

假如自訂函數是存在myfunc.py,名稱為functionname:

import myfunc as ...
x=myfunc.functionname(...)

(注意: myfun的.py要省略) (注意: 儲存自訂函數的.py檔,名稱不能與自訂函數的名字相同)

如果我們把剛才的quadf函數另存成myfunc.py

In [13]:
import myfunc as mf

print(mf.quadf(1,2,-3))
[1.0, -3.0]