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的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)
  • 如何设置默认参数

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


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

查看所有标签

猜你喜欢:

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

The Art of UNIX Programming

The Art of UNIX Programming

Eric S. Raymond / Addison-Wesley / 2003-10-3 / USD 54.99

Writing better software: 30 years of UNIX development wisdom In this book, five years in the making, the author encapsulates three decades of unwritten, hard-won software engineering wisdom. Raymond b......一起来看看 《The Art of UNIX Programming》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具