Python 基础起步 (十) 什么叫函数?

栏目: Python · 发布时间: 5年前

内容简介:大家好,这一期让我们来看看Python中比较核心的知识点:函数(也叫方法),那么到底什么是一个函数呢?先让我引入一个官方一点的定义:函数是对程序逻辑进行结构化或者过程化的一种编程方法。是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。好啦,我知道这说的不是人话,其实简单理解就是: 如果我们有一些代码可以执行一些功能,比如有100行,我们可以把这些代码打包叫做A,那么A就是一个函数,下次我们想要执行一样的功能,不用重新写100行,直接调用A就可以了。在接

Python 函数

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

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

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

内置函数,调用函数

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

abs(-500)
Out:500

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

type('Hello')                # <class 'str'>
max(10,20,30,45)             # 45
len('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的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)
  • 如何设置默认参数

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

理想主义者

理想主义者

[美] 贾斯汀·彼得斯 / 程静、柳筠 / 重庆出版社 / 2018-5-15 / 49.80元

2013年1月11日,年仅26岁的黑客亚伦·斯沃茨自杀身亡,此事在美国引起轩然大波。这不仅是因为在互联网领域,斯沃茨是一个可以与比尔·盖茨、马克·扎克伯格、理查德·斯托曼等齐名的人,更是因为此事揭露了传统世界与互联网世界的规则冲突。 在互联网思维下,信息是明码标价的商品。各种利益方用技术竖起了一道道藩篱,将支付不起费用但渴望用知识改变命运的人隔绝在外。于是,一大批希望改变这种模式的“理想主义......一起来看看 《理想主义者》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具