python-函数和递归

1. 函数

函数是一段可重复使用的代码块,用于执行特定任务。通过定义函数,可以提高代码的可读性和可维护性.

# 定义一个简单的函数
def greet(name):
    return "Hello, " + name

# 调用函数
print(greet("Alice"))

在这个示例中,定义了一个名为 greet 的函数,它接受一个参数 name,并返回一个包含问候语的字符串。通过调用函数并提供参数,我们可以获取函数的返回值。

2. 参数传递和返回值

在 Python 中,可以向函数传递参数,并从函数中返回值。参数传递可以是位置参数、关键字参数或默认参数.

# 参数传递
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出 8

在这个示例中,函数 add 接受两个参数 ab,并返回它们的和。通过调用函数并传递参数,我们可以获取函数的返回值.

3. 作用域规则

作用域规则指的是变量的可访问性范围。在函数内部可以访问全局变量,但在函数外部无法直接访问函数内部的局部变量.

# 示例作用域规则
x = 10  # 全局变量

def my_func():
    y = 5  # 局部变量
    print(x)  # 可以访问全局变量
    print(y)

my_func()

在这个示例中,变量 x 是全局变量,而变量 y 是在函数 my_func 中定义的局部变量。函数内部可以访问全局变量 x,但在函数外部无法直接访问函数内部的局部变量 y.

4. 递归

递归是指一个函数在定义中调用自身的过程。递归函数通常用于解决需要重复执行相同操作的问题,如计算阶乘或斐波那契数列等。

# 计算阶乘的递归函数
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

result = factorial(5)
print(result)  # 输出 120

在这个示例中,factorial 函数通过递归的方式计算给定数的阶乘。递归函数在每次调用中都会减小问题的规模,直到达到基本情况(在这里是 n 等于 0),然后开始返回值并依次计算结果。

5. apply()函数

apply() 函数通常与 pandas 库中的 DataFrame 对象相关联,用于在 DataFrame 上应用函数。但在最新的 pandas 版本中,apply() 函数已被弃用,推荐使用 applymap()map() 函数。

6. lambda操作符

lambda 表达式用于创建匿名函数,通常用于简化代码或作为函数的参数。

# 使用 lambda 创建匿名函数
add = lambda x, y: x + y
print(add(3, 5))  # 输出 8

在这个示例中,使用 lambda 操作符创建了一个匿名函数,该函数接受两个参数并返回它们的和。lambda 表达式通常在需要简单函数时使用,可以在不定义命名函数的情况下创建函数。

7. map(), zip(), reduce() 和 filter()

这些函数是 Python 中常用的函数式编程工具。map() 用于对可迭代对象中的每个元素应用函数,zip() 用于将多个可迭代对象打包成元组,reduce() 用于对可迭代对象中的元素进行累积操作,filter() 用于筛选可迭代对象中的元素。

8. 列表内涵

列表内涵(List Comprehensions)是一种简洁的方法来创建列表,通过在一行代码中对可迭代对象执行操作,生成新的列表。

# 使用列表内涵创建新列表
numbers = [1, 2, 3, 4, 5]
squared = [x**2 for x in numbers]
print(squared)  # 输出 [1, 4, 9, 16, 25]

在这个示例中,使用列表内涵将原始列表中的每个元素进行平方操作,生成一个新的列表。

9. eval(), exec, execfile() 和 compile()

这些函数用于处理字符串和动态执行代码。eval() 用于计算字符串表达式的值,exec() 用于执行字符串中的代码,execfile() 用于执行文件中的代码,compile() 用于将字符串编译为可执行代码对象。

创建一个学生成绩管理系统,该程序将包括定义函数、参数传递和返回值、作用域规则、递归、lambda 表达式、map() 函数、列表内涵等内容。

# 定义一个全局变量
passing_score = 60

# 定义一个函数来判断学生成绩是否及格
def is_pass(score):
    return score >= passing_score

# 使用列表内涵创建学生成绩列表
scores = [75, 80, 55, 90, 65]

# 使用 map() 函数将学生成绩传入 is_pass 函数进行判断
passing_status = list(map(is_pass, scores))
print(passing_status)  # 输出 [True, True, False, True, True]

# 使用 lambda 表达式和 filter() 函数来筛选及格的学生成绩
passing_scores = list(filter(lambda x: x >= passing_score, scores))
print(passing_scores)  # 输出 [75, 80, 90, 65]

# 使用递归计算学生成绩的总和
def calculate_total_score(scores):
    if not scores:
        return 0
    else:
        return scores[0] + calculate_total_score(scores[1:])

total_score = calculate_total_score(scores)
print(total_score)  # 输出 365

在这个例子中,我们结合了函数、参数传递和返回值、作用域规则、递归、apply() 函数、lambda 操作符、map() 函数、列表内涵等概念来创建了一个学生成绩管理系统。

你可能感兴趣的:(python)