函数
在介绍了变量之后,我们来看看函数。函数是一段代码,它可以被多次调用。函数可以接受参数,也可以返回值。
函数的定义使用关键字 def
,后面跟着函数名和圆括号 ()
。圆括号中可以定义参数(parameters),多个参数之间使用逗号 ,
分隔。函数体以冒号 :
开始,并且必须缩进。
def function_name(parameter1, parameter2):
# do something
return something
函数的定义不会被执行,只有在调用函数时才会执行函数体中的代码。调用函数很容易,只需要在函数名后面加上圆括号 ()
即可。
function_name(argument1, argument2)
在函数定义时的 parameter1
和 parameter2
是形参(formal parameters),在函数调用时被实参(actual parameters)argument1
和 argument2
替换。具体的例子如下:
def add(a, b):
return a + b
print(add(1, 2))
我们再来看看 return
关键字。return
用于返回函数的值,如果没有 return
语句,函数会返回 None
。return
语句可以出现在函数体的任何位置,一旦执行到 return
语句,函数就会返回,不会再执行后面的语句。举个例子:
def add(a, b):
print(a + b)
return 'Mission complete.'
print(a + 2 * b)
print(add(1, 2))
输出结果为:
可以看到,print(a + 2 * b)
没有被执行。
作用域
在函数中定义的变量只能在函数内部使用,这个变量的作用域是局部的。如果在函数外部定义了一个变量,那么这个变量的作用域是全局的,可以在函数内部使用。
a = 1
def add(b):
return a + b
print(add(2))
输出结果为:
如果在函数内部定义了一个与全局变量同名的变量,那么函数内部的变量会覆盖全局变量。
a = 1
def add(a, b):
return a + b
print(add(2, 3))
输出结果为:
递归
递归是一种常见的算法,它的思想是把一个问题分解成多个子问题,然后逐个解决子问题。递归函数就是在函数内部调用自身。
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)