稍微学过其他编程语言的人都应该了解函数的概念。在这里就不做过多的介绍。
Python内置了很多有用的函数,我们可以也直接调用。
可以直接从Python的官方网站查看文档:
http://docs.python.org/2/library/functions.html
类似于之前在介绍List的range() ,用于list切片介绍的zip()函数等等。都是python内置函数库提供的API。
但是python的有些内置函数需要引用包(类型于C语言的头文件)。在程序开头引用包,举个例子:
import math //引用#math包
函数定义
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
举个例子:定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和。
def square_of_sum(L): sum = 0 for x in L: sum += x*x return sum
函数返回多值
在python中,函数也可以返回多个值。大家要记得,如果Python的函数返回多值其实就是返回一个tuple类似对象。
>>> def my_getvalue(x,y): ... if y==0: ... return ... a = x/y ... b = x%y ... return a,b ... >>> print my_getvalue(11,5) (2, 1)
定义默认参数
定义函数的时候,还可以有默认参数。
例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
>>> int('123') 123 >>> int('123', 8) 83
int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。
函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
注意:由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:
# OK: def OK1(a, b=1, c=2): pass # Error: def Fail1(a=1, b): pass
举个例子:定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 'Hello, world.',如果传入,打印 'Hello, xxx.'
>>> def greet(name = 'world'): ... print 'Hello,',name,'.' ... >>> greet() Hello, world . >>> greet('python') Hello, python .
定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数。
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数。
>>> def fu(*args): ... print args ... >>> fu() () >>> fu('a') ('a',) >>> fu(1,2,3) (1, 2, 3)
Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部也可以直接把变量 args 看成一个 tuple 类型对象。
举个例子:编写接受可变参数的 average() 函数。(求平均)
>>> def average(*args): ... length = len(args) ... if length ==0: ... return 0.00 ... else: ... return (sum(args)*1.0)/length ... >>> print average(1,2) 1.5 >>> print average(1,2,3,4,5) 3.0
小结:函数对应python来讲,是比较实用的。