Python基础学习(十):函数

函数是 Python 编程中的核心概念之一,它封装了可重复使用的代码块,提高了代码的模块化和可维护性。


1. 函数基础

1.1 函数的概念

  • 概念:函数是可以重复执行的语句块,用于封装代码逻辑。

  • 作用:提高代码的重用性和可读性。

  • 定位:函数是面向过程编程的最小单位。

1.2 函数的定义

使用 def 语句定义函数。

def add(a, b):
    return a + b

2. 内置函数

Python 提供了许多内置函数,可以直接使用。以下是一些常见的内置函数:

2.1 all()

检查可迭代对象中的所有元素是否为 True

print(all([True, True, False]))  # 输出: False

2.2 sum()

计算可迭代对象中所有元素的和。

print(sum([1, 2, 3]))  # 输出: 6

2.3 sorted()

返回一个排序后的新列表。

print(sorted([3, 1, 2]))  # 输出: [1, 2, 3]

2.4 zip()

将多个可迭代对象打包成元组。

names = ["Alice", "Bob"]
ages = [25, 30]
zipped = zip(names, ages)
print(list(zipped))  # 输出: [('Alice', 25), ('Bob', 30)]

2.5 filter()

过滤出符合条件的元素。

numbers = [1, 2, 3, 4, 5]
filtered = filter(lambda x: x % 2 == 0, numbers)
print(list(filtered))  # 输出: [2, 4]

3. 函数的调用

函数通过函数名加括号 () 来调用。

3.1 基本用法

result = add(3, 5)  # 调用函数
print(result)  # 输出: 8

3.2 参数传递

函数调用时可以通过多种方式传递参数。

3.2.1 位置传参
def greet(name, age):
    print(f"Hello, {name}. You are {age} years old.")

greet("Alice", 30)  # 输出: Hello, Alice. You are 30 years old.
3.2.2 关键词传参
greet(age=30, name="Alice")  # 输出: Hello, Alice. You are 30 years old.
3.2.3 默认值参数
def greet(name, age=25):
    print(f"Hello, {name}. You are {age} years old.")

greet("Alice")  # 输出: Hello, Alice. You are 25 years old.
3.2.4 可变参数
def sum_numbers(*args):
    return sum(args)

print(sum_numbers(1, 2, 3))  # 输出: 6
3.2.5 关键词参数
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30)
# 输出:
# name: Alice
# age: 30

4. 变量作用域

变量的作用域决定了变量的可见性和生命周期。Python 中的作用域遵循 LEGB 规则(Local, Enclosing, Global, Built-in)。

4.1 局部作用域

def func():
    x = 10  # 局部变量
    print(x)

func()  # 输出: 10

4.2 全局作用域

x = 10  # 全局变量

def func():
    global x  # 声明使用全局变量
    x = 20

func()
print(x)  # 输出: 20

4.3 嵌套作用域

def outer():
    x = 10  # 外层函数变量
    def inner():
        nonlocal x  # 声明使用外层变量
        x = 20
    inner()
    print(x)  # 输出: 20

outer()

5. 递归函数

递归函数是指函数直接或间接调用自身的过程。递归通常用于解决可以分解为相似子问题的问题。

5.1 阶乘

def factorial(n):
    if n == 0 or n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 输出: 120

5.2 斐波那契数列

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(6))  # 输出: 8

6. 匿名函数

匿名函数(lambda 函数)是一种没有名字的函数,通常用于需要一个简短的、临时的函数场景。

6.1 基本语法

lambda arguments: expression

6.2 示例

add = lambda a, b: a + b
print(add(3, 5))  # 输出: 8

6.3 使用场景

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

7. 高阶函数

高阶函数是指可以接受函数作为参数或返回函数的函数。

7.1 map()

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

7.2 filter()

numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出: [2, 4]

7.3 reduce()

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 输出: 120

8. 总结

  • 函数定义:使用 def 关键字定义函数。

  • 参数传递:支持位置传参、关键词传参、默认值参数、可变参数等。

  • 作用域:遵循 LEGB 规则,分为局部、嵌套、全局和内建作用域。

  • 递归函数:用于解决可以分解为相似子问题的问题。

  • 匿名函数:使用 lambda 定义简短的函数。

  • 高阶函数:可以接受函数作为参数或返回函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值