数学上的函数,是指给定一个输入,就会有唯一输出的一种对应关系。编程语言里的函数跟这个意思差不多,但也有不同。函数就是一块语句,这块语句有个名字,你可以在需要时反复地使用这块语句。它有可能需要输入,有可能会返回输出。
举一个现实中的场景:我们去餐厅吃饭,跟服务员点了菜,过了一会儿,服务员把做好的菜端上来。餐厅的厨房就可以看作是一个函数,我们点的菜单,就是给这个函数的参数;厨师在厨房里做菜的过程就是这个函数的执行过程;做好的菜是返回结果,返回到我们的餐桌上。
我们之前已经用到过python里内建的函数,比如input和range。
以range(1,10)为例,range是这个函数的名称,后面括号里的1和10是range需要的参数。它有返回结果,就是一个从1到9的序列。
再来看input(),括号里面没有,表示我们没有给参数。函数执行过程中,需要我们从控制台输入一个值。函数的返回结果就是我们输入的内容。
PS:range还可以接受1个或3个参数,input也可以接受1个字符串参数。可以等我以后讲,或去查阅相关资料了解详细。
如果我们要自己写一个函数,就需要去 定义 它。python里的关键字叫def(define的缩写),格式如下:
def sayHello():
print 'hello world!'
sayHello是这个函数的名字,后面的括号里是参数,这里没有,表示不需要参数。但括号和后面的冒号都不能少。下面缩进的代码块就是整个函数的内容,称作函数体。
然后我们去调用这个函数:
sayHello()
得到和直接执行print 'hello world!'一样的结果。
上面我们讲了怎样定义一个自己的函数,但我们没有给他提供输入参数的功能。不能指定参数的函数就好比你去餐厅吃饭,服务员告诉你,不能点菜,有啥吃啥。这显然不能满足很多情况。
所以,如果我们希望自己定义的函数里允许调用者提供一些参数,就把这些参数写在括号里,如果有多个参数,用逗号隔开,如:
def sayHello(someone):
print someone + ' says Hello!'
或者
def plus(num1, num2):
print num1+num2
参数在函数中相当于一个变量,而这个变量的值是在调用函数的时候被赋予的。在函数内部,你可以像过去使用变量一样使用它。
调用带参数的函数时,同样把需要传入的参数值放在括号中,用逗号隔开。要注意提供的参数值的数量和类型需要跟函数定义中的一致。如果这个函数不是你自己写的,你需要先了解它的参数类型,才能顺利调用它。
比如上面两个函数,我们可以直接传入值:
sayHello('Crossin')
还是注意,字符串类型的值不能少了引号。
或者也可以传入变量:
x = 3
y = 4
plus(x, y)
在这个函数被调用时,相当于做了num1=x, num2=y这么一件事。所以结果是输出了7。
转载自 Crossin的编程教室