Python函数定义与参数传递全解析

Python基础:函数定义与参数基础



一、知识点详解

1.1 函数的概念及作用

  • 函数是什么?
    通俗理解
    函数像一个可重复使用的工具盒,将代码打包命名,需用时直接调用名称完成特定任务。
    编程定义
    函数:通过 def 关键字定义的代码块,可接收输入(参数)、处理数据并返回结果。
    核心特点
    • 封装性:隐藏内部实现,使用者仅关注功能。
    • 复用性:一次定义,多次调用。

  • 为什么需要函数?

    1. 解决代码重复问题
    应用场景:多个地方需执行相同操作(如计算平均数、打印表格)。
    对比示例

    # 重复代码(不推荐)  
    print("=====学生成绩=====")  
    print("姓名: 张三")  
    print("总分: 280")  
    print("=================")  
    
    print("=====学生成绩=====")  
    print("姓名: 李四")  
    print("总分: 295")  
    print("=================")  
    
    # 使用函数优化  
    def print_score(name, total):  
        print("=====学生成绩=====")  
        print(f"姓名: {name}")  
        print(f"总分: {total}")  
        print("=================")  
    
    print_score("张三", 280)  
    print_score("李四", 295)  
    

    2. 提高代码可读性
    复杂任务分解:将大问题拆分为小函数(如“注册用户”拆分为验证密码、保存数据等函数)。
    命名即注释:好的函数名直接说明功能(如 validate_emailif...else 更易懂)。

    3. 方便维护和调试
    集中修改:修改函数内部代码,所有调用处自动生效。
    降低错误:减少重复代码 → 更少出错可能。


  • 什么时候用函数?

    1. 常见应用场景

    场景示例
    重复代码块打印格式化表格、计算平均值
    复杂任务分解用户注册(验证、保存、发邮件)
    数据处理清洗数据、转换格式
    工具类操作生成随机数、时间格式化

    2. 判断标准
    当一段代码被使用 超过 2 次,或代码块超过 5 行,建议封装为函数。


1.2 形参与实参(核心概念)

  • 形参(Formal Parameter)
    定义:函数定义时括号内的参数,用于接收外部传入的值。
    特点:仅存在于函数内部,作用域为函数体,生命周期仅在函数执行期间有效

  • 实参(Actual Parameter)
    定义:函数调用时传递的具体值或变量。
    特点:可以是常量、变量、表达式等。

  • 示例

    # 形参:a, b  
    def add(a, b):  
        return a + b  
    
    # 实参:3, 5  
    result = add(3, 5)  # 实参传递给形参 a 和 b  
    

1.3 函数的定义

  • 核心作用:封装重复代码为可复用模块,提高可读性和维护性。

  • 定义语法

    def 函数名(参数1, 参数2, ...):  
        """文档字符串(描述函数功能)"""  
        代码块  
        return 返回值  # 可选  
    
  • 代码规范
    函数名:全小写字母,单词间用下划线连接(如 calculate_area)。
    参数:多个参数用逗号分隔,可接收任意数据类型。
    缩进:函数体必须缩进(通常 4 个空格)。

  • 示例

    def greet(name):  
        """向指定用户发送问候语"""  
        print(f"你好呀, {name}!")  
    

1.4 函数的调用

  • 基础调用:通过函数名加括号执行函数,传递必要参数。

    # 调用函数,传递实参  
    greet("小美")  
    # 输出:你好呀, 小美!    
    
  • 执行流程
    1. 解释器找到 greet 函数定义。
    2. 将参数 "小美"(实参)传递赋值给 name(形参)。
    3. 执行函数体内的代码。


1.5 参数传递方式

  • 1. 位置参数(必选参数)
    规则:实参按顺序一一对应形参。
    示例

    def my_pet(animal_type, pet_name):  
         print(f"我有一只{animal_type},它叫{pet_name}。")  
    
     # 正确调用:位置参数按顺序传递  
    my_pet("猫", "小黑")  # 输出:我有一只猫,它叫小黑。  
    
     # 错误调用:顺序颠倒导致逻辑错误  
    my_pet("小黑", "猫")  # 输出:我有一只小黑,它叫猫。 ❌ 
    
  • 2. 关键字参数
    规则:通过 形参名=值 指定参数,可打乱顺序。
    示例

    my_pet(pet_name="小白", animal_type="狗")  
    # 正确 → 输出:我有一只狗,它叫小白。  
    
  • 3. 混合使用位置参数与关键字参数
    规则
    1. 位置参数必须在前,关键字参数在后。
    2. 不可重复对同一形参赋值。
    正确示例

    my_pet("仓鼠", pet_name="布丁")  
    # 输出:我有一只仓鼠,它叫布丁。  
    

    错误示例

    my_pet(pet_name="布丁", "仓鼠")  
    # ❌ 位置参数必须在关键字参数前 
     
    my_pet("布丁", animal_type="仓鼠")  
    # ❌ 重复赋值("布丁"→animal_type,animal_type又被指定)  
    
  • 4. 无参数函数
    函数可以没有参数,直接执行固定操作。

    def say_hi():  
        print('你好啊!')  
    
    say_hi()  # 输出: 你好啊!  
    

二、说明示例

场景 1:计算矩形面积

def rectangle_area(length, width):  
    """计算矩形面积"""  
    area = length * width  
    print(area)  

# 调用方式 1:位置参数  
rectangle_area(4, 5)  # 20  

# 调用方式 2:关键字参数  
rectangle_area(width=5, length=4)  # 20  

场景 2:判断数字正负

def check_number(num):  
    """判断数字正负"""  
    if num > 0:  
        print("正数")  
    elif num < 0:  
        print("负数")  
    else:  
        print("零")  

check_number(10)  # 正数  
check_number(-5)  # 负数  
check_number(0)  # 零  

三、知识点总结

  1. 函数概念
    函数是什么:可重复使用的代码工具包。
    核心作用:减少重复代码、提高可读性、方便维护。
    何时使用:重复操作或复杂任务分解时。

  2. 形参实参:
    形参:函数定义时的参数。
    实参:函数调用时传入的具体值。

  3. 定义调用
    定义函数:使用 def 关键字,指定函数名和参数。
    调用函数:通过函数名加括号传递参数。
    返回值:使用 return 返回结果(可选)。

  4. 参数传递规则
    位置参数按顺序传递。
    关键字参数通过参数名指定,可打乱顺序。
    混合使用时,位置参数必须在前。
    可以没有参数。


四、知识点考察题

def test(a, b, c):
    print(a + b + c)

以下参数传递方式正确的是( )

  • A. test(1, b=2, 3)
  • B. test(1, 2, a=3)
  • C. test(a=1, b=2, d=3)
  • D. test(b=1, c=2, a=3)

答案:D

解析
A. test(1, b=2, 3)
错误原因:位置参数必须在关键字参数前,第3个参数3(位置参数)不能出现在b=2(关键字参数)之后

B. test(1, 2, a=3)
错误原因:重复赋值,形参a已通过位置参数赋值为1,不能再通过关键字参数赋值为3

C. test(a=1, b=2, d=3)
错误原因:函数无参数d,存在未定义参数

D. test(b=1, c=2, a=3)
正确原因:全用关键字参数可打乱顺序,参数名与形参完全匹配,无重复赋值



关注「安于欣」获取更多Python技巧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值