【python篇——一周速通python语法】一篇文章带你学会python的函数 📅 2026/7/18 21:43:57 作者主页现有专栏算法篇Linux篇QT百日筑基篇数据结构篇python篇python函数语法简介目录/索引目录数学中的函数vs计算机中的函数一、数学中的函数定义二、Python 中的函数程序函数三、核心区别对照表什么是函数函数return的使用py中函数返回值的进阶global函数变量扬名天下的利器函数的缺省值不同传参函数的递归一、什么是递归二、递归执行原理栈函数数学中的函数vs计算机中的函数一、数学中的函数定义数学函数yf(x)集合映射关系定义域输入x的取值范围值域输出y的取值范围核心规则一个自变量 x 只能对应唯一 y一一映射 / 多对一不能一对多纯映射输入确定输出永远固定无副作用 例f(x)2x1x3 永远得到 7不受外界影响二、Python 中的函数程序函数是一段可复用代码块只是借用 “函数” 名字本质是代码执行单元规则完全放开。三、核心区别对照表对比维度数学函数Python 函数核心本质数集之间的映射关系封装代码、执行操作的代码模块输入规则一个 x 只能对应唯一 y禁止一对多无限制同一个入参可以返回不同结果输出唯一性纯函数输入固定→输出永久固定存在有副作用函数输入相同结果可变返回值一定有唯一对应输出可以无返回值默认返回None是否依赖外部只依赖自变量 x和外界无关可读取 / 修改全局变量、文件、网络、时间等外部数据副作用绝对无副作用只计算数值大量副作用打印、修改变量、读写文件、弹窗参数数量单变量 / 多变量但都是数值任意参数数字、字符串、列表、对象、甚至其他函数定义域限制严格限定 x 取值如x要求x≥0不强制校验输入传非法值只会报错不会自动限制定义域是否能重复调用只是抽象映射不存在 “调用执行”必须手动调用才会运行可反复执行逻辑复杂度仅数学运算加减乘除、三角函数等可分支、循环、判断、IO、网络、复杂业务逻辑什么是函数函数是封装一段可重复执行代码的代码块实现代码复用、简化逻辑、降低冗余。 分为两类内置函数Python 自带print()、len()、input()自定义函数用户用def关键字自己定义在python中如何去定义一个函数呢语法def 函数名参数...: 缩进 函数体 缩进 return 值 #有返回值使用return来进行接收我们写一个简单的打印程序吧。我们对函数进行了定义在这个函数中我们实现了一个print的功能 然后我们这个函数有参数我们就将参数进行书写没有参数就将不写参数 但是没有参数也是要写这个括号不能进行省略我们函数的功能要写函数名的方式进行调用也就是下面的printf//这个就是一个函数的调用def printf(): print(这是python的一个函数的编写) printf();函数return的使用我们如果想要函数中的值的化我们是需要进行返回我们想要得到的值的 那我们直接进行return就行了向我们下面的程序。我们想得到相加之后的值我们采用了returnxy的值 并在函数外面进行调用打印。def add(x,y): return xy print(add(1,2))py中函数返回值的进阶在py中可以进行多返回值进行返回 在c/c中只能返回一个值。所以这也是py的一些特色吧。这里我们把x1的值给了a 我们把y1给了b 所以在py中可以进行多值的返回。def test(x,y): return x1, y1 a,b test(1,2) print(a) print(b)我们如果返回多个值但是也有几个值不想要我们就能进行_来进行占位像下面的代码我们只将会y1给了bx1给_代表我们不接受这个参数。def test(x,y): return x1, y1 _,b test(1,2) print(b)实参和形参a0 b1 print(f未进入函数前: a{a}b{b}) def test(a,b): a10 b10 print(f函数内: a{a}b{b}) test(a,b) print(f进入函数后: a{a}b{b})我们发现我们的参数在函数体内部进行了10函数体内部的a,b进行了改变出函数时和进函数的值是一样的 所以我们这里进入函数内部a,b出来的时候不会发生任何变化。所以我们在外面传的实参 在函数的参数叫做形参。 所以形参的改变不影响实参的改变。global函数变量扬名天下的利器global用于在函数内部声明要使用 / 修改全局变量只读取全局变量不加global也能读如果要修改、重新赋值全局变量必须先写global 变量名否则 Python 会把它当成局部变量。a0 b1 print(f未进入函数前: a{a}b{b}) def test(a,b): global num num100; a10 b10 print(f函数内: a{a}b{b}) test(a,b) print(f进入函数后: a{a}b{b}) print(num)函数的缺省值缺省规则参数的缺省值只能从右向左进行书写。如果我给这个参数的传参数缺省值没有任何的作用 如果我不传这个参数的话 那么就会用这个缺省值def add(a,b10): return ab; print(add(1,2)); print(add(1));不同传参我可在传参的时候就指定内部的形参要哪个参数。def add(x,y): print(fx{x}, y {y}) return xy add(y1,x2)函数的递归一、什么是递归递归函数自己调用自己把大问题拆解成结构相同、规模更小的子问题直到触达终止条件。 公式基线条件出口停止递归不再调用自身必须写否则无限递归报错递归条件缩小问题规模再次调用自己二、递归执行原理栈每次函数自调用会在调用栈开辟新空间保存当前变量 满足基线条件后逐层返回栈依次释放。 Python 默认递归深度限制约 1000 层超过抛出RecursionError。def factorial(n): # 基线条件 if n 1 or n 0: return 1 # 递归条件 return n * factorial(n - 1) print(factorial(5)) # 120总结递归必须有基线条件作为出口每次自调用要缩小问题规模保证能走到基线递归靠调用栈实现有深度上限重复计算场景用缓存优化简单计算优先循环树形 / 分治类问题适合递归。下篇预告列表和元组的使用