def - 建立函式

在Python中建立函式的方法是使用def 陳述句

基本語法以範例說明:

def functionName(argv):
  #do someting
  return argv # can return something or not

如果你有學過其他的程式語言,可能會發現一些不一樣的地方:

  • 沒有定義回傳值型態-在動態語言Python中,回傳值的型態就是由傳回的值決定,因此在Python中並不支 援Overload功能。
  • 沒有參數型態-同樣的,參數的型態可能為任何型態

若不想要有回傳值只要在方法的最後直接輸入換行便能離開函式

>>> def hello(name):
...     print("You back! " + name)
...
>>> hello("Dr. Freeman")
You back! Dr. Freeman

在函式之中也可以在定義一個函式,這稱為內部函式。

>>> def doubleSum(num,num2):
...     def double(x):
...        return x ** 2
...    return double(num) + double(num2)
...
>>>  doubleSum(3,4)
...    25

再來是一個判斷是否為質數的範例:

>>> from math import sqrt
>>> def prime(num):
...     for i in range(2,int(sqrt(num))):
...       if num % i == 0
...         return False
...     return True
...
>>> prime(97)
True

下面一個例子:

def func():
     print x

在這個範例中,x的值的優先順序是:在func()方法中找區域變數定義,沒有則往全域變數尋找,若都沒有就往
Python所擁有的內建變數尋找,如果都找不到則顯示一個error訊息。

另外一點必須注意的是,由於上述機制的原因,我們不能在method中定義x的值:

def func():
     print x
     x = 10
x=20
func()#error

在這之中,由於優先尋找區域變數定義的緣故,在未定義時就要印出,此範例會顯示一個UnboundLocalError的錯誤訊息。