Python基础巩固:函数与递归解析

需积分: 0 0 下载量 154 浏览量 更新于2024-08-29 收藏 83KB PDF 举报
"这篇资料主要讲述了重新学习Python入门知识的重要性,强调了基础知识对于后续学习的支撑作用,尤其在遇到技术瓶颈时,回顾基础能够帮助提升信心和弥补不足。作者分享了从Jupyter Notebook中学习的经验,并感谢B站UP主‘字节课’提供的Python原教程。内容涵盖函数的定义、内嵌函数的使用、函数作为参数和返回值的调用、函数闭包的概念以及函数递归的示例。此外,还提及了切片操作,但未给出具体细节。" 在Python编程中,函数是组织代码的基本单元,`def`关键字用于定义函数。例如,定义一个名为`a`的函数可以写作`def a():`。函数可以包含任何数量的语句,用于执行特定任务。 内嵌函数是一种在另一个函数内部定义的函数,它们只能在包含它们的函数内部被调用。这样的设计有助于封装和隐藏内部逻辑。例如,函数`b`是函数`a`的内嵌函数,`c`是`b`的内嵌函数。在下面的例子中,`a()`函数可以调用`b()`,但不能直接调用`c()`,因为`c()`是`b()`的局部变量,只在`b()`的作用域内有效: ```python def a(): print("函数a") def b(): print("函数b") def c(): print("函数c") c() # 这里可以调用c() b() c() # NameError: name 'c' is not defined,因为c()在a()的作用域外无效 a() ``` 函数可以作为参数传递给其他函数,也可以作为返回值。在作为参数的示例中,我们可以将函数`b`传递给`a`作为参数,然后在`a`内部调用`b`: ```python def a(x): x() def b(): print(666) a(b) # 输出两次666,因为x()即为b() ``` 同样,函数可以作为返回值,例如`a`函数返回`b`函数的引用,这样`i`变量就等于`a`函数,可以像调用`a`一样调用`b`: ```python def a(): print("hello", "world") def b(): return a i = b() # i现在等同于a函数 i() # 调用i相当于调用a函数,输出"hello world" ``` 函数闭包是指一个函数能够记住它被创建时的环境,即使外部环境已经改变。例如,`x`函数返回一个内部函数`y`,`y`记住`x`的参数`a`: ```python def x(a): def y(b): return a + b return y z = x(2) # z现在是一个闭包,记住a=2 print(z(3)) # 输出5,因为z()相当于y()(3),y记住a=2 ``` 函数递归是指函数在其定义中调用自身。在计算阶乘时,递归非常有用: ```python def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 输出120,5的阶乘 ``` 切片操作在Python中用于获取序列(如列表、元组或字符串)的一部分。虽然在提供的内容中没有详细介绍,但基本语法是`sequence[start:stop:step]`,其中`start`是起始索引,`stop`是结束索引(不包括),`step`是步长。例如,`a[1:4:2]`将从索引1开始,每隔一个元素取一个,直到索引4(不包括)。如果省略`step`,默认值为1。如果`start`或`stop`省略,则从序列开头或结尾开始。