位置:首頁 » Python3入門教學 » Python3 函數

Python3 函數 [編輯]

函數定義

函數是可重用的代碼,可以在程序中任何地方調用。我們使用這個語法來定義函數:

def function(parameters):
     instructions
     return value

def 關鍵字告訴 Python,我們有一段可重用的代碼(函數)。一個程序可以有很多函數。

示例

我們可以調用函數(參數)的功能。

#!/usr/bin/python
 
def f(x):
    return x*x
 
print f(3)

輸出結果:

9

該函數具有一個參數,x。返回值是函數的返回值。並非所有的函數都有返回值。我們可以通過傳遞多個變量:

#!/usr/bin/python
 
def f(x,y):
    print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)
    print 'x * y = ' + str(x*y)
 
f(3,2)

輸出:

You called f(x,y) with the value x = 3 and y = 2
x * y = 6

作用域

變量隻能實現它們所限定的區域,這就是所謂的作用範圍。下麵示例中將無法正常工作:

#!/usr/bin/python
 
 
def f(x,y):
    print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)
    print 'x * y = ' + str(x*y)
    z = 4 # cannot reach z, so THIS WON'T WORK
 
z = 3
f(3,2)

但是,這將:

#!/usr/bin/python
 
def f(x,y):
    z = 3
    print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)
    print 'x * y = ' + str(x*y)
    print z   # can reach because variable z is defined in the function
 
f(3,2)

讓我們來進一步看看:

#!/usr/bin/python
 
def f(x,y,z):
    return x+y+z   # this will return the sum because all variables are passed as parameters
 
sum = f(3,2,1)
print sum

在函數中調用函數

我們還可以從另外一個函數獲取變量的內容:

#!/usr/bin/python
 
def highFive():
    return 5
 
def f(x,y):
    z = highFive()    # we get the variable contents from highFive()
    return x+y+z      # returns x+y+z. z is reachable becaue it is defined above
 
result = f(3,2)
print result

變量不能的範圍(作用域)之外。下麵的例子是行不通的。

#!/usr/bin/python
 
def doA():
    a = 5
 
def doB():
    print a   # does not know variable a, WILL NOT WORK!
 
doB()

但這個例子使用外部參數可以運行:

#!/usr/bin/python
 
def doA():
    a = 5
 
def doB(a):
    print a   # we pass variable as parameter, this will work
 
doB(3)

在最後的例子中,我們有一個名為 a 的兩個不同的變量,因為變量 a 的範圍是僅在函數。 該變量冇有範圍之外不會被知道。

該函數 doB() 將打印 3(傳遞給它的值)。分配 a = 5 包含在函數 doA() 內但不被使用,除函數 doA() 本身之內,並不可見在函數 doB() 或代碼的其餘部分。

如果一個變量可以到達代碼的任何位置被稱為:全局變量。如果一個變量隻作用在一定範圍內,我們稱之為:局部變量