python有参函数教程

有参函数(Parametric Function)

奶牛吃的是草,挤的是奶。工厂输入原料,输出产品。有句谚语叫物华天宝,人杰地灵,物华天宝是自然环境,如果把它看成是输入,那么“人”就是这个自然环境的输出。正所谓一方水土一方人。有种测试叫黑盒测试,测试人员根本不会去了解或理解黑盒里的东西是怎么实现的,只要给它输入条件,如果它能输出正确的结果,就说明功能已经OK了。上回我们提到了函数有返回值,返回值可以看成是函数的输出。函数还会有输入,这些输入是通过参数实现的。我们都用过print语句,它的参数就是逗号隔开的数据。它的返回值其实是None。每个函数都有返回值,我们没有写它具体的返回值的时候,它会默默地返回None,如果要写返回值的话,该如何定义函数呢?以下是语法图:

上面的参数列表是以逗号隔开的变量名称,类型可以是整数,字符串等。最后一句return语句用来返回数据的。return在英文中就是返回的意思。当调用函数的时候,小括号中的值会传递给参数,如下图所示:

下面我们来定义一个有参数的函数:

>>> def add(x,y):      #  定义函数,有两个参数
  z = x + y            # 把参数的值加起来赋值给z
  return z             # 返回z

>>> s = add(32,76)     # 调用函数,返回结果用s进行引用
>>> s
108

当调用add函数的时候,32会被赋值给x,76会被赋值给y。在函数进行一系列运算后它把z变量的值返回以供使用,这就是函数的输出。简而言之,这个add函数的输入是两个数据,输出是它们的和。需要注意的是,在调用函数时实际书写的顺序要和定义时的顺序一致,否则会发生牛头不对马嘴的情况,严重地会导致程序运行出错。请看下面一例:

>>> def do_stuff(first,second,third):
  string = "小明" + first + "后" + second  +"再" + third
  return string

>>> do_stuff("吃饭","刷牙","起床")
'小明吃饭后刷牙再起床'
>>> do_stuff("起床","刷牙","吃饭")
'小明起床后刷牙再吃饭'
>>>

形参与实参(Formal and Actual parameter)

上面我们提到了参数,在定义函数时小括号内的参数是形式上的参数,叫做形参,而在调用的时候用的是实际的具体数据,这叫实际参数,简称实参。形式参数在接收到数据时,它就成了一个局部变量了。以下是一个例子:

>>> def zsum(number):               #  定义函数,有形式参数为number
  s = 0
  for n in range(1,number+1):
    s = s + n
  return s

>>> zsum(10)                  # 调用函数,10 是实际参数
55
>>>

有个小问题,在函数内部能改变形式参数的值吗?这里需要说明的是,通过def是定义函数,并不是真正的执行函数。由于形式参数它已经接受到了实际参数的值,这时候它是一个本地变量了。这个变量的值当然能被改变。请看下列代码示例:

>>> def times(number):
        number = number * number
  return number

>>> times(8)
64
>>> times(16)
256
>>>

其实上面的times直接用return times*times就能达到同样的效果,上面这么写只是为了教学演示。