首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 10章 编写高效的函数
10.1 函数名
10.2 函数大小的权衡
10.3 函数的形参和实参
10.3.1 默认参数
10.3.2 使用*和**向函数传参
10.3.3 使用*创建可变参数函数
10.3.4 使用**创建可变参数函数
10.3.5 使用*和**创建包装函数
10.4 函数式编程
10.4.1 副作用
10.4.2 高阶函数
10.4.3 lambda 函数
10.4.4 在列表推导式中进行映射和过滤
10.5 返回值的数据类型应该不变
10.6 抛出异常和返回错误码
第 11章 注释、文档字符串和类型提示
11.1 注释
11.1.1 注释风格
11.1.2 内联注释
11.1.3 说明性的注释
11.1.4 总结性的注释
11.1.5 “经验之谈”的注释
11.1.6 法律注释
11.1.7 注释的专业性
11.1.8 代码标签和TODO 注释
11.1.9 神奇的注释和源文件编码
11.2 文档字符串
11.3 类型提示
11.3.1 使用静态分析器
11.3.2 为多种类型设置类型提示
11.3.3 为列表、字典等设置类型提示
11.3.4 通过注释向后移植类型提示
第 12章 通过Git管理项目
12.1 Git 提交和仓库
12.2 使用Cookiecutter新建Python项目
12.3 安装Git
12.3.1 配置Git 用户名和电子邮件
12.3.2 安装GUI Git 工具
12.4 Git 的工作流程
12.4.1 Git 是如何追踪文件状态的
12.4.2 为什么要暂存文件
12.5 在计算机上创建Git 仓库
12.5.1 添加供Git 追踪的文件
12.5.2 忽略仓库中的文件
12.5.3 提交修改
12.5.4 从仓库中删除文件
12.5.5 重命名和移动仓库中的文件
12.6 查看提交日志
12.7 恢复历史修改
12.7.1 撤销未提交的本地修改
12.7.2 取消暂存的文件
12.7.3 回滚近期的提交
12.7.4 回滚到单个文件的某次提交
12.7.5 重写提交历史
12.8 GitHub 和git推送命令
12.8.1 将一个已存在的仓库推送到GitHub
12.8.2 克隆已存在的GitHub仓库
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(四)
小册名称:Python编程轻松进阶(四)
### 10.3 函数的形参和实参 在Python编程中,函数是组织代码、实现特定功能的基本单元。函数通过接收输入(称为参数)并返回输出(称为返回值)来执行其定义的任务。理解函数的形参(形式参数)和实参(实际参数)之间的关系,是掌握函数编程的关键一步。本章节将深入探讨这一核心概念,并通过实例展示如何在Python中有效地利用形参和实参。 #### 10.3.1 形参(Formal Parameters) 形参是函数定义时用于接收传入值的变量名。在函数体内部,你可以通过形参来引用传入的数据,并执行相应的操作。形参仅在函数被调用时存在,并且其作用域仅限于函数体内。 **示例**: ```python def greet(name): """向指定的人打招呼""" print("Hello, " + name + "!") # 在这里,'name' 是形参 ``` 在上面的例子中,`greet` 函数定义了一个名为 `name` 的形参。当调用 `greet` 函数并传入一个字符串作为参数时,这个字符串值会被赋给 `name`,然后函数体内部的代码会执行。 #### 10.3.2 实参(Actual Parameters) 实参是调用函数时传递给函数的具体值或表达式。在函数被调用时,实参的值会被传递给对应的形参,然后函数会根据这些值执行其定义的任务。 **示例**(继续上面的例子): ```python greet("Alice") # 在这里,"Alice" 是实参 ``` 在这个例子中,`"Alice"` 是传递给 `greet` 函数的实参。调用函数时,`"Alice"` 的值被赋给了函数定义中的形参 `name`,然后函数打印出 `"Hello, Alice!"`。 #### 10.3.3 位置参数 默认情况下,Python中的函数参数是通过位置来匹配的。也就是说,第一个实参会赋给第一个形参,第二个实参会赋给第二个形参,依此类推。 **示例**: ```python def add_two_numbers(a, b): """返回两个数的和""" return a + b result = add_two_numbers(5, 3) print(result) # 输出:8 ``` 在这个例子中,`5` 和 `3` 是实参,它们分别按位置匹配给了 `add_two_numbers` 函数的形参 `a` 和 `b`。 #### 10.3.4 关键字参数 除了位置参数外,Python还支持关键字参数。关键字参数允许你通过参数名来传递参数值,这样你就不必担心参数的顺序问题了。 **示例**: ```python result = add_two_numbers(b=3, a=5) print(result) # 输出:8 ``` 在这个例子中,尽管实参的顺序与形参的定义顺序不同,但通过使用关键字参数,我们仍然可以正确地传递值并得到预期的结果。 #### 10.3.5 默认参数 在函数定义时,你可以为形参指定默认值。如果调用函数时没有为这些形参提供实参,那么就会使用默认值。 **示例**: ```python def greet_with_greeting(name, greeting="Hello"): """使用指定的问候语向人打招呼""" print(greeting + ", " + name + "!") greet_with_greeting("Bob") # 输出:Hello, Bob! greet_with_greeting("Charlie", "Hi") # 输出:Hi, Charlie! ``` 在这个例子中,`greeting` 形参有一个默认值 `"Hello"`。当调用 `greet_with_greeting` 函数时没有提供 `greeting` 实参时,就会使用默认值 `"Hello"`。 #### 10.3.6 可变参数 有时,我们不知道函数将接收多少个参数。Python提供了两种机制来处理这种情况:`*args` 用于处理非关键字可变参数,`**kwargs` 用于处理关键字可变参数。 - **`*args`**:允许你将一个不定长度的参数列表传递给函数。这些参数在函数内部会被封装成一个元组。 **示例**: ```python def sum_numbers(*args): """计算任意多个数的和""" total = 0 for num in args: total += num return total print(sum_numbers(1, 2, 3, 4)) # 输出:10 ``` - **`**kwargs`**:允许你传递任意数量的关键字参数。这些参数在函数内部会被封装成一个字典。 **示例**: ```python def create_user(**kwargs): """根据关键字参数创建用户信息""" for key, value in kwargs.items(): print(f"{key}: {value}") create_user(name="John", age=30, city="New York") # 输出: # name: John # age: 30 # city: New York ``` #### 10.3.7 参数解包 在调用函数时,你也可以使用 `*` 和 `**` 来解包列表、元组或字典,作为位置参数或关键字参数传递。 **示例**: ```python nums = [1, 2, 3, 4] print(sum_numbers(*nums)) # 输出:10 user_info = {"name": "Jane", "age": 28, "email": "jane@example.com"} create_user(**user_info) # 输出: # name: Jane # age: 28 # email: jane@example.com ``` #### 总结 函数的形参和实参是Python编程中的基础且核心概念。形参定义了函数接收输入的方式,而实参则是调用函数时传递给函数的具体值。通过理解位置参数、关键字参数、默认参数、可变参数以及参数解包等特性,你可以编写出更加灵活和强大的函数,以应对复杂的编程需求。希望本章节的内容能够帮助你更好地掌握这一重要概念,并在你的Python编程之旅中助你一臂之力。
上一篇:
10.2 函数大小的权衡
下一篇:
10.3.1 默认参数
该分类下的相关小册推荐:
Python高并发编程与实战
Python编程轻松进阶(五)
Python与办公-玩转PDF
Python与办公-玩转PPT
Python机器学习实战
实战Python网络爬虫
剑指Python(万变不离其宗)
Python合辑1-Python语言基础
剑指Python(磨刀不误砍柴工)
Python数据分析与挖掘实战(下)
Python与办公-玩转Excel
Python合辑14-面向对象编程案例(下)