您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:详解Python中的普通函数和高阶函数

51自学网 2022-02-21 10:45:09
  python
这篇教程详解Python中的普通函数和高阶函数写得很实用,希望能帮到您。

什么是函数

每个语言都有函数,甚至大家用的Excel里面也有函数,我们以前学习的数学也很多各种各样的函数。

Python中的函数也是一样的。

def f(x):    print("参数为:",x)    return x

这里的函数 y = f(x), 在数学中表示为一条斜率为1的直线。

函数的嵌套调用

def z(x):    passdef f(x):    print("参数为:",x)    return z(x)

像这样,我们在f(x)中调用了z(x)函数(这里使用了pass关键字,实现先不写,仅作展示目的)

我们能不能不定义z(x)就定义一个函数调用别的函数呢?

就像实现一个数的平方,函数的‘平方',大概这个意思。

高阶函数

def f(z):    return z()

这就是高阶函数,f函数需要外界提供一个参数,这个参数必须是一个函数。

在使用f(z)的时候,我们不能给一个f(2), f(3)这样的值。或者有个函数如d(x)返回非函数值结果,我们不能这样调用:f(d(1))。

学委准备了下面的代码,从简单函数逐步演化为高阶函数:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/10/24 11:39 下午# @Author : LeiXueWei# @CSDN/Juejin/Wechat: 雷学委# @XueWeiTag: CodingDemo# @File : func_demo2.py# @Project : hellodef f1(x):    return xdef f2(x, z=100):    return x + z / 10def f3(x, z=100, *dynamic_args):    sum = 0    for arg in dynamic_args:        sum += arg    return x + z / 10 + sum / 10000.0def dummy_sum(*args):    return 0def f4(x, z=100, sum_func=dummy_sum):    return x + z / 10 + sum_func() / 10000.0print(f1(100))print(f2(100, z=50))print(f3(100, 50, 4, 5, 6))def sum_g(*dynamic_args):    def sum_func():        sum = 0        for arg in dynamic_args:            sum += arg        return sum    return sum_funcprint(f4(100, 50, sum_g(4, 5, 6)))

这里我们看到函数f1, f2, f3, f4。

补充一个知识点: *dynamic_args 是一个动态参数,不定长度的参数。
也就是f3明明声明了3个参数,最后我们给了5个参数。
这里f3认为x=100, z=50, dynamic_args = [4, 5, 6]

我们先看看输出结果:

f3 和f4 看起来结果一样。

但是性质完整不一样,读者可以思考十秒。

f4弹性非常大,因为第三个参数为函数。

高阶函数可以帮助我们把计算‘降维'(三维变成二维,二维变一维)。

我们思考一下计算圆形和方形的面积

相信大家闭着眼都能写出下面两个函数:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/10/24 11:39 下午# @Author : LeiXueWei# @CSDN/Juejin/Wechat: 雷学委# @XueWeiTag: CodingDemo# @File : func_demo2.py# @Project : helloimport mathdef circle_area(r):    return math.pi * r * rdef rectangle_area(a, b):    return a * b

这是圆形面积的数学公式:

f ( r ) = π
利用Python
基于pygame实现贪吃蛇小游戏示例

万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。