Python基础:函数作用域与高阶函数

需积分: 1 1 下载量 169 浏览量 更新于2024-08-04 收藏 7KB TXT 举报
"本资源是关于Python基础知识的学习笔记,涵盖了函数、作用域、变量类型以及函数式编程的概念。" 在Python编程中,了解作用域是非常关键的。全局变量是在整个程序范围内都可访问的,而局部变量只在定义它的函数内部有效。`globals()`和`locals()`函数分别用于获取全局和局部作用域内的变量。Python有四种作用域:局部作用域(函数内部)、外部嵌套函数作用域(一个函数内部定义的函数)、模块级作用域(全局,即脚本或模块级别)以及内建模块作用域(Python内置函数的作用域)。`global`语句用于在函数内部修改全局变量,而`nonlocal`则用于在嵌套函数中引用并修改外部非全局的变量。 lambda表达式是一种简洁地创建匿名函数的方式,它接受任意数量的参数,但只有一个表达式。例如,`lambda x, y: x + y`创建了一个将两个参数相加的函数。`exec`和`eval`函数则用于执行字符串形式的Python代码,`eval`通常用于计算字符串中的表达式。 函数在Python中被视为一等公民,这意味着它们可以像其他数据类型一样被赋值给变量、作为参数传递给其他函数,也可以作为其他函数的返回值。这种特性使得Python非常适合函数式编程。函数式编程强调通过组合和应用函数来解决问题,避免改变状态和可变数据。 函数的可重入性是指如果一个函数的输入参数固定,那么其输出也应该始终一致。为了实现可重入,函数应避免依赖于任何非局部变量,包括全局变量。在给定的示例中,`myadd`函数最初依赖于全局变量`y`,所以它是不可重入的;而更新后的`myadd`函数接收两个参数,因此是可重入的。 高阶函数是接受一个或多个函数作为参数,并且可能返回一个函数的函数。在Python中,`map`、`filter`和`sorted`等都是内建的高阶函数。`map`函数接收一个函数和一个或多个可迭代对象,然后将函数应用于可迭代对象的每个元素,返回一个新的可迭代对象。例如,可以使用`map`函数和自定义的`pow2`函数计算1到9的平方和。类似地,`filter`用于根据指定条件筛选可迭代对象的元素,而`sorted`则用于排序可迭代对象。 练习题目涉及到使用高阶函数解决数学问题,如计算平方和、立方和等,这可以通过巧妙地应用`map`和`reduce`(或者`functools.reduce`)等函数来实现。这些练习有助于巩固对函数式编程的理解和应用。