Python零基础入门:函数的定义与使用详解

导语

"函数是Python的构建模块,掌握它们就像获得了编程超能力!"

一、为什么需要函数?

  • 避免重复代码(DRY原则)

  • 提高代码可读性

  • 便于调试和维护

二、函数的基本概念

函数是一段具有特定功能的、可重用的代码块。在Python中,使用def关键字来定义函数。

2.1 函数的定义语法

def 函数名(参数1, 参数2, ...):
    """函数文档字符串"""
    函数体
    return 返回值

    2.2 函数的组成部分

    • 函数名:函数的标识符,遵循Python变量命名规则

    • 参数:函数接收的输入值,可以有多个或没有

    • 文档字符串:对函数功能的说明(可选但推荐)

    • 函数体:实现函数功能的代码块

    • return语句:返回函数结果(可选)

    三、函数的定义与调用

    3.1 定义无参函数

    def greet():
        """打印问候语"""
        print("Hello, World!")
    
    # 调用函数
    greet()  # 输出: Hello, World!

    3.2 定义带参函数 

    def greet(name):
        """打印个性化问候语"""
        print(f"Hello, {name}!")
    
    # 调用函数
    greet("Alice")  # 输出: Hello, Alice!

    3.3 定义带返回值的函数

    def add(a, b):
        """返回两个数的和"""
        return a + b
    
    # 调用函数并获取返回值
    result = add(3, 5)
    print(result)  # 输出: 8

    四、函数的参数类型

    Python函数支持多种参数传递方式:

    4.1 位置参数

    def power(base, exponent):
        """计算base的exponent次方"""
        return base ** exponent
    
    print(power(2, 3))  # 8

    4.2 默认参数

    def power(base, exponent=2):
        """计算base的exponent次方,默认平方"""
        return base ** exponent
    
    print(power(3))     # 9 (使用默认参数)
    print(power(3, 3))  # 27

    4.3 关键字参数

    def describe_pet(pet_name, animal_type='dog'):
        """显示宠物信息"""
        print(f"I have a {animal_type} named {pet_name}.")
    
    describe_pet(pet_name='Whisky')  # 使用关键字参数
    describe_pet(animal_type='hamster', pet_name='Harry')

    4.4 可变参数

    # *args接收任意数量的位置参数
    def sum_numbers(*args):
        """计算任意数量数字的和"""
        total = 0
        for num in args:
            total += num
        return total
    
    print(sum_numbers(1, 2, 3))  # 6
    print(sum_numbers(1, 2, 3, 4, 5))  # 15
    
    # **kwargs接收任意数量的关键字参数
    def build_profile(**kwargs):
        """构建用户资料"""
        profile = {}
        for key, value in kwargs.items():
            profile[key] = value
        return profile
    
    user = build_profile(name='Alice', age=25, occupation='Engineer')
    print(user)  # {'name': 'Alice', 'age': 25, 'occupation': 'Engineer'}

    五、函数的返回值

    5.1 返回单个值

    def square(number):
        """返回数字的平方"""
        return number * number
    
    result = square(4)
    print(result)  # 16

    5.2 返回多个值

    def get_circle_info(radius):
        """返回圆的面积和周长"""
        area = 3.14 * radius * radius
        circumference = 2 * 3.14 * radius
        return area, circumference
    
    a, c = get_circle_info(5)
    print(f"面积: {a}, 周长: {c}")  # 面积: 78.5, 周长: 31.400000000000002

    5.3 无返回值函数

    def print_hello(name):
        """打印问候语,无返回值"""
        print(f"Hello, {name}!")
    
    result = print_hello("Bob")  # Hello, Bob!
    print(result)  # None

    六、变量的作用域

    6.1 局部变量

    def test_local():
        x = 10  # 局部变量
        print("函数内:", x)
    
    test_local()
    # print(x)  # 报错,x未定义

    6.2 全局变量

    x = 20  # 全局变量
    
    def test_global():
        global x  # 声明使用全局变量
        x = 30
        print("函数内:", x)
    
    test_global()
    print("函数外:", x)  # 函数外: 30

    七、Lambda函数

    Lambda函数是一种匿名函数,用于简单的操作:

    # 普通函数
    def square(x):
        return x * x
    
    # Lambda等价形式
    square_lambda = lambda x: x * x
    
    print(square(5))        # 25
    print(square_lambda(5)) # 25
    
    # 在列表排序中使用
    pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
    pairs.sort(key=lambda pair: pair[1])
    print(pairs)  # [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

    八、递归函数

    递归函数是调用自身的函数:

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

    九、函数的高级用法

    9.1 函数作为参数

    def apply_operation(func, x, y):
        """应用传入的函数到x和y"""
        return func(x, y)
    
    def add(a, b):
        return a + b
    
    def multiply(a, b):
        return a * b
    
    print(apply_operation(add, 3, 4))       # 7
    print(apply_operation(multiply, 3, 4))  # 12

    9.2 闭包

    def make_multiplier(factor):
        """创建闭包函数"""
        def multiplier(x):
            return x * factor
        return multiplier
    
    times3 = make_multiplier(3)
    times5 = make_multiplier(5)
    
    print(times3(9))  # 27
    print(times5(3))   # 15

    9.3 装饰器

    def my_decorator(func):
        """装饰器函数"""
        def wrapper():
            print("函数执行前...")
            func()
            print("函数执行后...")
        return wrapper
    
    @my_decorator
    def say_hello():
        print("Hello!")
    
    say_hello()
    # 输出:
    # 函数执行前...
    # Hello!
    # 函数执行后...

    十、总结

    Python函数是代码组织和重用的基本单元,掌握函数的定义与使用是Python编程的基础。本文介绍了:

    1. 函数的基本定义语法

    2. 各种参数传递方式

    3. 返回值的使用

    4. 变量作用域规则

    5. Lambda表达式

    6. 递归函数

    7. 函数的高级用法(函数作为参数、闭包、装饰器等)

    通过灵活运用这些函数特性,可以写出更加模块化、可重用和易维护的Python代码。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    不爱说话的分院帽

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值