下面就先定義一個函數:
複製代碼 代碼如下:def foo():
print('function')
foo()
在上述代碼中,定義了一個名為foo的函數,這個函數沒有參數。最後一行代碼的功能是調用這個函數。這是一個函數的最簡單形式。下面來介紹一下有參數的函數: 複製代碼 代碼如下:def foo():
print('function')
def foo1(a,b):
print(a+b)
foo()
foo1(1,2)
foo1就是一個有參數的函數,使用foo1(1,2)就可以調用這個有參的函數了。
在程式中,有變數存在,就會涉及到變數的範圍的問題。在Python中,變數的範圍分三個等級:global、local和nonlocal。
global:顧名思義,表示全域變數。即這個變數在python中處於最高層次上,也就是這個變數的定義層次最高,而不是在函數或類中。
local:局部變數,被定義在函數之中。
nonlocal:這是一個相對的概念。在python中,函數內部可以嵌套定義內建函式,這樣函數內部的變數相對於函數內部的內嵌函數來講就是nonlocal的。
下面,給出相關的程式來說明,首先看一下全域和局部變數:複製代碼 代碼如下:x = 1
y = 2
def foo(x):
print(x)
print(y)
print('***********')
x = 3
global y
y = 3
print(x)
print(y)
print('***********')
foo(x)
print(x)
print(y)
#************************
#運行結果
1
2
***********
3
3
***********
1
3
在上述程式中,定義了兩個全域變數x和y, 在函數foo內部,也定義了一個局部變數x。根據運行結果可知,在foo內部,變數x是真正的局部變數。因為對其所做的修改並沒有對全域變數x產生影響。另外,如果在foo內部需要使用全域變數,則需要使用global關鍵字。global y的意圖就是聲明變數y為外部聲明過的全域變數y。所以,在foo內部對y進行修改後,在foo外部仍然有影響。因為foo修改的是全域變數。
再來看一下nonlocal: 複製代碼 代碼如下:def out():
z = 3
def inner():
nonlocal z
z = 4
print('inner function and z = {0}'.format(z))
inner()
print('out function and z = {0}'.format(z))
out()
#**********
#運行結果
inner function and z = 4
out function and z = 4