函数,即是一个具有某个特定功能的可重用的程序语句块,这块语句有个名字叫函数名。在需要的时候使用这个名字运行该语句块,例如我们之前已经使用过了MicroPython中内建的函数print()。

1.2.5.1 函数定义

   除了MicroPython内建的函数,用户也可以使用def语句自定义的函数。定义格式如下:

def <函数名> (<参数1, 参数2, ……>) :
    <函数体>
      ...
      ...
      ...

示例:

>>> def my_print():
...   print("hello world!")
... 
>>>

1.2.5.2 函数调用

   函数定义完成后,使用函数名来调用函数,从而使用其功能。
示例:

>>> def my_abs(x):  #求x的绝对值
>>>   if x >= 0:
>>>     return x
>>>   else:
>>>     return -x
...     
...     
... 
>>> a = my_abs(-5)
>>> print(a)
5

1.2.5.3 函数参数

   函数可以接收输入的值,并利用这些值做一些事。
   函数在被定义的时候通过指定参数来处理这些具体的值,如果需要指定多个参数,参数之间用逗号分隔。
示例:

>>> def print_max(a, b):
...   if a > b:
...     return a
...   else:
...     return b
...     
...     
... 
>>> a = print_max(4, 6)
>>> print(a)
6

1.2.5.4 默认值参数

   在定义函数的过程中如果指定了参数,那么调用函数时一定要给所有的参数传递值,否则会出错。
   但是在一些情况下,可能又希望它的参数是可选的,即不要求调用函数时一定要给所有参数都传递值,那么可以通过默认值参数来完成。
示例:

>>> def say_message(message, times=2):
...   print(message*times)
... 
>>> say_message("hello", 3)
hellohellohello
>>> say_message("look")
looklook

1.2.5.5 关键参数

   在调用函数时,还可以使用另外一种方式给函数传递值,即使用参数的名字(关键字)而不是位置,这被称为关键参数。
   使用关键参数的优势:不需要担心参数顺序,使函数调用更简单。
示例:

>>> def print_abc(a, b, c):
...   print(a, b, c)
... 
>>> print_abc(1, 2, 4)
1 2 4
>>> print_abc(c=4, b=2, a=1) #使用关键参数
1 2 4

1.2.5.6 return语句

   return用来退出一个函数,也可以使用return从函数返回一个值,并且这个值可以赋给其他变量。
   如果return语句没有返回值,等价于return None,表示无返回值。如果函数中没有明确指定return语句,都在结尾暗含有return None语句。
示例:

>>> def print_max(x, y):
>>>   if x > y:
>>>     return x
>>>   elif x < y:
>>>     return y
>>>   else:
...     return
...     
...     
... 
>>> print_max(5, 3)
5
>>> print_max(5, 5)
>>> a = print_max(5, 5)
>>> print(a)
None

1.2.5.7 lambda表达式

   lambda 表达式可以返回一个函数,使用lambda表达式可明显减少函数数量。定义格式如下:

lambda <参数1, 参数2, ……> : <表达式>

示例:

>>> def make_incrementor(n):
...   return lambda x : x+n
... 
>>> f = make_incrementor(32)
>>> print(f(3))
35
>>> sum = lambda x,y : x+y
>>> print(sum(32, 3))
35

1.2.5.8 全局变量、局部变量

全局变量

   定义在整个文件中但在函数外部,作用域为全局范围的变量称为全局变量。
   如果需要在函数内使用全局变量,同时又为全局变量赋值,则使用global关键字来实现。
示例:

>>> x = 0       #声明全局变量x
>>> def print_x():
...   global x  #使用变量x
...   x = 5
...   print(x)
... 
>>> print_x()
5
>>> print(x)
5

局部变量

   在函数定义内声明的变量,只在当前函数内有效,即使函数外有同名变量存在,它们也没有任何关系,这样的变量称为局部变量。
示例:

>>> x = 10     #全局变量
>>> def print_x():
...   x = 6    #局部变量
...   print(x)
... 
>>> print_x()
6
>>> print(x)
10

   关键字nonlocal的作用与关键字global类似,使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。
示例:

>>> def fun():
...   num = 3
...   def fun2():
...     nonlocal num
...     num *= 2
...     print(num)
...   return fun2()
... 
>>> fun()
6

results matching ""

    No results matching ""