购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 Python函数

2.5.1 认识函数

函数的英文是 function,所以通俗地来讲,函数就是功能的意思。函数是用来封装特定功能的,比如,在Python里,len()是一个函数,其实现的功能是返回一个字符串的长度,所以len()函数的特定功能是返回长度;又如,我们可以自己定义一个函数,然后编写这个函数的功能,之后在要使用时再调用这个函数。所以,我们可以将函数分为两种类型,一种是系统自带的不用我们编写其功能的函数,比如len()函数;另一种是我们自定义的需要我们编写其功能的函数,这种函数的自由度高,叫作自定义函数,需要在使用时直接调用该函数。

1.Python中的函数的功能

在 Python 中有很多内建函数,当然,随着学习的深入,我们也可以创建对自己有用的函数。为了更清楚地理解函数的功能,这里先给出几个示例。

示例一,实现取字符串长度的功能:

示例二,实现字符串的切割:

示例三,进行字符串的大写转化:

2.在Python中定义函数

要想在 Python 中使用自定义函数,就得先定义一个函数。对一个函数的定义包括两部分,一部分是声明这个指定的部分是函数,而不是其他对象;一部分是定义这个函数所包含的功能,也就是要编写这个函数的功能。

定义函数的格式如下:

示例如下:

这样就定义了一个 function1 函数,它没有参数,也没有返回值,仅仅打印出经过运算的a的值。

2.5.2 形参与实参

在 Python 中函数的功能是实现一项或多项功能,比如函数 len()的功能是取字符串的长度。但是,如果没有指明要取哪个字符串的长度,则仅有len()是没有实际意义的。要让len()有实际意义,就必须将某个字符串放进这个函数里。比如,我们要取字符串"abcdm"的长度,就要将"abcdm"放进 len()里,变成 len("abcdm"),这时 len()才有实际意义,括号里的"abcdm"就叫作函数的参数。

我们可以发现,参数是函数在执行功能时要用到的数据。

1.什么是形参

在 Python 中函数是有参数的,函数的参数有两种,一种是实参,另一种是形参。形参一般发生在函数定义的过程中,一般指参数的名称,而不代表函数的值,它只是形式上的函数,只表明在一个函数中的哪个位置有哪个名称的参数。下面通过示例来了解形参:

如上所示的函数的名称是function,它有a、b两个形参。我们在调用这个函数时需要对其赋两个参数,分别赋值给a和b,该函数的功能是打印出较大的值:

2.什么是实参

实参与形参刚好互补,一般在函数调用时出现,并且一般指参数的具体的值。下面通过示例了解什么是函数的实参,并总结函数的实参与形参的区别:

如上所示,函数的名称是 function1,在函数中有 a、b 两个形参,每次调用函数时都需要分别给a、b赋值,如果a大于b,则返回字符串a+b;如果a小于等于b,则返回字符串a-b。

在a=function1(1,3)中,1和3是实参,分别被赋给了a、b,因为1<3,所以输出的结果是a-b。

3.参数的传递

在 Python 中,函数在调用的过程中对参数的传递是有顺序的。下面讲解第 1 种参数的传递方式,也是最简单的传递方式,即按位置传递:

在函数function中有两个形参,并且两个形参的默认值为a=1及b=0,在调用function时,需要给其赋两个值,分别给第 1 个位置(a)和第 2 个位置(b)。该函数的功能是输出两个位置中较大的值。

注意:因为 a、b 有默认的值,所以在不输入或者仅输入其中一个的参数时,函数的调用也不会报错。

下面讲解第 2种参数的传递方式,即赋值传递:关键字参数。在 Python的一个函数中出现多个参数时,我们可以通过参数的名字直接给我们的参数赋值,这些参数就叫作关键字参数。

如下所示,函数function有3个形参,分别是:add、b、c,它们的默认值都是0。在调用function时需要给其赋3个值。function(a,c,b)表示将a的值赋给add,将b的值赋给c,将c的值赋给b:

在如下示例中,function(add=a,b=b,c=c)表示将a的值赋给add,将b的值赋给b,将c的值赋给c:

在如下示例中,function(b=7,add=8)表示将8赋给add,将7赋给b。虽然没有对c赋值,但是c的默认值为0,因此也并没有报错:

在如下示例中,function(c=2,b=3,add=5)表示将5赋给add,将3赋给b,将2赋给c。在利用关键字参数进行赋值的过程中可以改变参数的位置:

2.5.3 全局变量与局部变量

1.什么是作用域

在 Python 中,一个变量是在一定的范围内起作用的,这个范围就叫作作用域。下面通过实例来讲解作用域:

可以看到输出的结果仍然是 10,这说明在 func 函数中对 i 的第 2 次赋值并没有改变全局中i的取值。

2.局部变量

在 Python 中,作用域在一定范围内(而非全局内)起作用的变量叫作局部变量。在一个函数中,若没有对变量进行全局变量声明,则默认为一个局部变量。下面通过实例来认识局部变量:

如上所示的代码很形象地说明了全局变量和局部变量,在运行func2函数时会打印局部变量i的值7,但是在打印全局变量i时输出的结果仍然是2,这说明在函数内部对i的赋值并没有改变全局中i的值。

3.全局变量

在 Python 中,如果想让某些变量的作用域为全局,也就是作用于程序的所有区域,就要对这个变量进行全局声明,在声明后这个变量就成了全局变量。下面通过实例来讲解全局变量:

函数func3和func2的区别在于,在func3中多了global i这一行代码,这行代码的作用是在函数中给全局变量赋值。在以上代码中,在运行 func3 后再打印 i,输出的结果不再是2,而是7,这说明在运行func3后改变了全局变量i的值。

注:若要在函数中给全局变量赋值,就需要用global关键字声明。

2.5.4 对函数的调用与返回值

1.对函数的调用

在程序运行时,若想执行某个函数,就需要调用这个函数。若想调用一个函数,则在定义函数之后,直接输入并运行一遍这个函数名即可;若想传递实参给这个函数,则直接在括号里输入实参即可。比如一个函数被定义为 def func3(),则在调用它时直接输入func3(参数)即可,其中的参数可以省略:

注:因为定义的全局变量i的值为7,所以最后打印的结果为7。

2.函数的返回值

在 Python 中有的函数是有返回值的,有的函数是没有返回值的。有返回值的函数可以返回一个值,也可以返回多个值,函数的返回值是通过return语句来实现的。

有一个返回值的情况如下:

有多个返回值的情况如下:

从如上所示的两个例子中可以看出,函数的返回值可以是一个或多个。

从如下所示的例子可以更清楚地看出,函数不但可以返回多个值,还可以将返回值直接赋给多个变量:

2.5.5 文档字符串

在 Python 中可以定义很多函数,但是对于开发人员来说,如果遇到太多的函数而并不很了解各个函数的作用,就会感到很混乱。这时如果想了解各个函数的作用,就得从头分析,很浪费时间。针对这个问题,我们提供了两种解决方式:第1种是在开发时为每个函数写一个文档进行说明;第2种是在每个函数开头的地方加上一行说明性文字,我们将其称为文档字符串,这样,我们在编程时就可以很快明白这个函数的作用及对参数的设定等,代码也会更加清晰。下面通过实例来讲解在Python中对文档字符串的使用:

通过对文档字符串的说明,我们就可以明白这个函数的功能及所返回结果的属性。 ALwObSDW5ossYAEXjWMPNLc8ur/dlLjI/B/mLmA6JwVFTRBZ24aQrVHTDKlIK/+9

点击中间区域
呼出菜单
上一章
目录
下一章
×