函數,即是將一段代碼封裝起來,用來實現特定的功能。
函數定義
除了MicroPython內建的函數,用戶也可以使用def語句自定義的函數。定義格式如下:
def <函數名> (<參數1, 參數2, ……>) :
<函數體>
...
...
...
示例:
函數調用
函數定義完成後,使用函數名來調用函數,從而使用其功能。
示例:
函數參數
函數可以接收輸入的值,並利用這些值做一些事。
多個參數傳遞需要用逗號隔開。
默認值參數
在定義函數的過程中如果指定了參數,那麼調用函數時一定要給所有的參數傳遞值,否則會出錯。
但是在一些情況下,可能又希望它的參數是可選的,即不要求調用函數時一定要給所有參數都傳遞值,那麼可以通過默認值參數來完成。
示例:
關鍵參數
在調用函數時,還可以使用另外一種方式給函數傳遞值,即使用參數的名字(關鍵字)而不是位置,這被稱爲關鍵參數。
使用關鍵參數的優勢:不需要擔心參數順序,使函數調用更簡單。
return語句
return用來退出一個函數,也可以使用return從函數返回一個值,並且這個值可以賦給其他變量。
如果return語句沒有返回值,等價於return None,表示無返回值。如果函數中沒有明確指定return語句,都在結尾暗含有return None語句。
>>> def xy(a,b):
... if a>b:
... return a
... elif a<b:
... return b
... else:
... return
>>> xy(5,6) #a=5,b=6
6
>>> a=xy(5,5)
>>> print(a)
None
lambda表達式
lambda 表達式可以返回一個函數,使用lambda表達式可明顯減少函數數量。定義格式如下:
lambda <參數1, 參數2, ……> : <表達式>
示例:
>>> def xy(n):
... return lambda x:x*n
...
...
...
>>> a =xy(32) #相當於n=32
>>> print(a(3)) #相當於x=3
96
全局變量
定義在整個文件中但在函數外部,作用域爲全局範圍的變量稱爲全局變量。
如果需要在函數內使用全局變量,同時又爲全局變量賦值,則使用global關鍵字來實現。
示例:
>>> x = 0 #聲明全局變量
>>> def xy():
... global x #使用變量
... x = 15
... print(x)
...
...
...
>>> xy()
15
>>> print(x)
15
局部變量
在函數定義內聲明的變量,只在當前函數內有效,即使函數外有同名變量存在,它們也沒有任何關係,這樣的變量稱爲局部變量。
示例:
>>> x = 66 #全局變量
>>> def xy():
... x = 6 #局部變量
... print(x)
...
>>> xy()
6
>>> print(x)
66
關鍵字nonlocal的作用與關鍵字global類似,使用nonlocal關鍵字可以在一個嵌套的函數中修改嵌套作用域中的變量。
示例:
>>> def xy():
... a = 6
... def xy2():
... nonlocal a
a *= 6
... print(a)
... return xy2()
...
>>> xy()
36