Python 函数
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:- 函数代码块以
def
关键词开头,后接函数标识符名称和圆括号()
。 - 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
return
[表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return
相当于返回 None。
创建一个函数
在Python中,使用def
关键字定义函数:
实例
def my_function(): print("Hello from a function")
调用函数
要调用函数,请使用函数名称后跟括号:参数
信息可以作为参数传递给函数。 参数在括号内的函数名后面指定。您可以根据需要添加任意数量的参数,只需用逗号分隔即可。 以下示例具有一个带有一个参数(fname)的函数。当调用该函数时,传递一个名字,在函数内部使用它来打印全名:实例
def my_function(fname): print(fname + " Refsnes") my_function("Emil") my_function("Tobias") my_function("Linus")运行实例 »
默认参数值
以下实例显示如何使用默认参数值。 如果我们调用没有参数的函数,它使用默认值:实例
def my_function(country = "Norway"): print("I am from " + country) my_function("Sweden") my_function("India") my_function() my_function("Brazil")运行实例 »
List作为参数传递
可以将任何数据类型的参数发送到函数(字符串,数字,列表,字典等),并将其视为函数内的相同数据类型。 例如,如果您将List作为参数传递,它到达函数内时仍是List:实例
PYTHON标题def my_function(food): for x in food: print(x) fruits = ["apple", "banana", "cherry"] my_function(fruits)运行实例 »
返回值
要让函数返回值,请使用return 语句:实例
PYTHON标题def my_function(x): return 5 * x print(my_function(3)) print(my_function(5)) print(my_function(9))运行实例 »
递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 在使用递归时要小心,因为它可以很容易编写一个永不终止的函数,或者使用大量内存或处理器能力的函数。但是,正确使用递归是一种非常有效且数学上优雅的编程方法。 在例子中tri_recursion()是定义为调用递归函数。使用k变量,每次递归时递减(-1)。当条件不大于0时(即为0时)递归结束。 对于一个新手来说,可能需要一些时间来确定其工作原理,最好的方法是通过不断修改测试,以达到熟练。实例
递归def tri_recursion(k): if(k>0): result = k+tri_recursion(k-1) print(result) else: result = 0 return result print("\n\nRecursion Example Results") tri_recursion(6)运行实例 »
递归经典实例:
阶乘计算 阶乘公式表示n! = 1 * 2 * 3 * ... * n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n 所以,fact(n)可以表示为n * fact(n-1),只有n=1时需要特殊处理。 于是,fact(n)用递归的方式写出来就是:def fact(n): if n==1: return 1 return n * fact(n - 1)运行结果:
>>> fact(1)
1
>>> fact(5)
120
我们可以看fact(5)的执行过程:
===> fact(5) ===> 5 * fact(4) ===> 5 * (4 * fact(3)) ===> 5 * (4 * (3 * fact(2))) ===> 5 * (4 * (3 * (2 * fact(1)))) ===> 5 * (4 * (3 * (2 * 1))) ===> 5 * (4 * (3 * 2)) ===> 5 * (4 * 6) ===> 5 * 24 ===> 120
递归经典实例:
斐波那契数列 (Fibonacci数) 斐波那契数列,数学中最重要的数列之一,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”, 是这样一个数列:0、1、1、2、3、5、8、13…… 在数学上斐波那契数列以递归的方法定义:F(0)=0、F(1)=1、F(n)=F(n-1)+F(n-2)(n>2)。def fun(n): if n <= 1: return n else: return fun(n - 1) + fun(n - 2)打印10斐波那契数列结果:
>>> for i in range(10):
... print(fun(i))
...
0
1
1
2
3
5
8
13
21
34