「Python|认知体系」为什么程序世界会需要函数定义和模块化?

本文主要介绍python中的函数定义方法以及函数定义和模块化存在的必要性

为什么需要函数定义和模块化

软件开发著作《人月神话》中有一个观点:软件开发的本质是控制系统的复杂度。对此,我是举双手双脚认同的。

  • 我们知道程序或者通俗说的电脑只能做重复性的工作,代码归根结底会被归纳到“条件”、“循环”和“递归”的排列组合中。
  • 正是因为我们让程序做的是都是重复性强的任务,这意味着很可能任务与任务之间只是存在着一些输入差别或者类似机械零部件/内部参数有细微差别。
  • 为了让我们在面对多个相似任务的时候,不用写出几段相似的代码来分别完成这些相似任务,我们会需要将任务相似部分对应的代码做一个包装/封装/固定,然后每次只在输入或参数上进行调整来多快好省地完成多个相似任务

帮助我们做到“把相似部分的代码固定下来重复使用”这件事的就是“函数”。

在函数之上更大的一个话题就是模块化,我们提取出固定部分是为了不再关心这部分内容,而是重点关系输入、参数和输出。同样的,在开发过程中,我们也会让函数包含的代码尽可能少,让理解函数功能所需要的时间、认知成本尽可能小。基于这一点会有诸多比如代码设计原则、微服务、测试驱动开发之类的最佳实践。(当然,这是后话,入门阶段只需要记住开篇那句高亮出来的信条即可

如何定义一个函数

python中函数定义相当简单,符合函数定义的格式即可:

def 函数名称(函数参数1, 函数参数2, .....):
	"""里面放入要重复使用的代码即可"""

函数的参数就是我们说的各个相似任务之间有差异的部分,差异的部分作为参数(或者叫输入)传入函数中,就可以跟函数中的固定代码组合成处理特定任务的代码了。函数参数的个数可以为0,也可以任意多个。

于是,我们用一个数学计算问题来说明函数定义处理相似任务的功能。比如,我们需要进行多次的平方运算或者立方运算(假设我们现在初中在做数学作业,靠程序来帮我们算),那么我们有两个任务:

  • 求平方
  • 求立方

我们可以写成如下形式:

def calculate(number, time):
	"""
	number是要进行平方或者立方运算的数值
	time代表要进行几次乘法, 平方运算传入2, 立方运算传入3
	"""
	if time == 2:
		return number * number
	if time == 3:
		return number * number * number

	"""或者写成以下形式"""
	result = 1
	for _ in range(time)
		result = result * number
	return result

不用想太多,直接用起来吧!

好书推荐:

好课推荐:

写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明仔的阳光午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值