博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 基础起步 (十) 什么叫函数?
阅读量:6508 次
发布时间:2019-06-24

本文共 2232 字,大约阅读时间需要 7 分钟。

Python 函数

大家好,这一期让我们来看看Python中比较核心的知识点:函数(也叫方法),那么到底什么是一个函数呢?先让我引入一个官方一点的定义:

函数是对程序逻辑进行结构化或者过程化的一种编程方法。是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

好啦,我知道这说的不是人话,其实简单理解就是: 如果我们有一些代码可以执行一些功能,比如有100行,我们可以把这些代码打包叫做A,那么A就是一个函数,下次我们想要执行一样的功能,不用重新写100行,直接调用A就可以了。在接下来的介绍中让我们看看实际例子

内置函数,调用函数

首先,Python内置了很多有用的函数,我们可以直接调用。不需要创建。而要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs

abs(-500)Out:500

很简单吧,只要直接调用函数名和函数需要的参数即可,再看一些其他的内置函数的例子:

type('Hello')                # 
max(10,20,30,45) # 45len('Hello world') # 11

大家看到常用的type函数了吧~,还有很多都是非常好用的内置函数,大家可以自己谷歌百度一下,在实际编程中非常有效,不过要注意一点,如果参数传递错误,那就会出错:

abs(1, 5)TypeError: abs() takes exactly one argument (2 given)

这里很好理解,abs这个内置方法只接受1个参数,这里传递了两个所以就报错了。

如何定义一个函数

我们可以自己创建函数,创建一个函数很简单,利用关键字def就可以, 之后依次写出函数名、括号、括号中的参数和冒号,最后在缩进块中编写函数体,函数的返回值用return语句返回。当然,如果不需要返回结果值,也可以不加return。我们以自定义一个求绝对值的my_abs函数为例:

def my_abs(x):    if x >= 0:        return x    else:        return -x

这里大家就可以发现,我们之前所学到的逻辑条件排上了用场,这里我们根据绝对值的求法写出了自己的函数,如果是正数返回函数本身,如果是负数,返回它的相反数。让我们测试一下

my_abs(-200)   Out:200

这里需要注意几点:函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

  • 如果没有return语句,函数执行完毕后也会返回结果,只是结果为None
  • return None可以简写为return`。

函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

默认参数

我们仍以具体的例子来说明如何定义函数的默认参数。我们现在想写一个求平方的函数:

def power(x):    return x * x

测试一下是否正确

power(5)Out:25

现在,如果我们要计算 x3x3 怎么办?可以再定义一个power3函数,但是如果要计算 x4x4 、 x5x5 ……怎么办?我们不可能定义无限多个函数。你也许想到了,可以把 power(x) 修改为 power(x, n),用来计算 xn:

def power(x, n):    s = 1    while n > 0:        n = n - 1        s = s * x    return s

对于这个修改后的 power 函数,可以计算任意 n 次方:

power(2, 3)Out:8

但是,旧的调用代码失败了,原因是我们增加了一个参数,导致旧的代码无法正常调用:

power(9)TypeError: power() missing 1 required positional argument: 'n'

这个时候,默认参数就排上用场了。由于我们经常计算 x2x2 ,所以,完全可以把第二个参数 n 的默认值设定为 2:

def power(x, n=2):    s = 1    while n > 0:        n = n - 1        s = s * x    return s

这样,当我们调用 power(5) 时,相当于调用 power(5, 2):

power(5)Out:25

而对于 n > 2 的其他情况,就必须明确地传入 n,比如 power(5, 3)。从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

  • 必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)
  • 如何设置默认参数

好啦,今天先为大家讲到这里,有很多复杂的方法还要大家自己去探索,

转载地址:http://dwdfo.baihongyu.com/

你可能感兴趣的文章
连接到 JasperReports Server
查看>>
java处理高并发高负载类网站问题
查看>>
使用C#生成随机密码(纯数字或字母)和随机卡号(数字与字母组合)
查看>>
CAS服务器端集群
查看>>
Android内存泄漏的常见场景及解决方案
查看>>
设计模式 之 访问者模式
查看>>
JAVA Collections框架
查看>>
更改Windwos server 2003 域用户密码策略默认配置
查看>>
进制转换
查看>>
反转字符串中的单词
查看>>
html与html5的一些区别
查看>>
ASCII码
查看>>
java常用四种排序源代码
查看>>
win7 下硬盘安装Redhat7
查看>>
js图表控件:highcharts的应用
查看>>
Redis 分布式锁的正确实现方式
查看>>
mysqldump 备份命令使用中的一些经验总结
查看>>
Linux下MySql安装配置方法总结
查看>>
本IT博客用于域名投资、互联网、资源下载等相关干货收藏和学习
查看>>
ArrayList底层实现
查看>>