这篇教程详解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)就定义一个函数调用别的函数呢? 就像实现一个数的平方,函数的‘平方',大概这个意思。
高阶函数这就是高阶函数,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实现贪吃蛇小游戏示例
|