【基础】函数的定义与调用
发布时间: 2024-06-26 08:16:19 阅读量: 69 订阅数: 135
函数的定义和调用
![【基础】函数的定义与调用](https://img-blog.csdnimg.cn/2b7d0ecee4ed41459074965172768442.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAT3lpbmdzaHVpTw==,size_20,color_FFFFFF,t_70,g_se,x_16)
# 2.1 函数调用的语法和规则
函数调用时,需要按照一定的语法规则来进行。函数调用的基本语法格式如下:
```
函数名(参数列表);
```
其中,`函数名`是函数的名称,`参数列表`是传递给函数的参数。参数列表中的参数之间用逗号分隔。
在调用函数时,需要遵循以下规则:
* 函数名必须与定义的函数名一致。
* 参数列表中的参数个数和类型必须与函数定义中的参数个数和类型一致。
* 如果函数有返回值,则必须在调用函数后接收返回值。
# 2. 函数调用与参数传递
函数调用是程序执行过程中一个重要的环节,它决定了函数如何被执行以及如何传递参数。本章节将深入探讨函数调用的语法和规则,以及函数参数的传递方式。
### 2.1 函数调用的语法和规则
函数调用遵循特定的语法格式,它由以下部分组成:
- 函数名:要调用的函数的名称。
- 参数列表:函数参数的列表,用逗号分隔。
- 分号:函数调用语句的结束符。
**示例:**
```python
def sum_numbers(a, b):
return a + b
result = sum_numbers(10, 20)
```
在上面的示例中,`sum_numbers` 是函数名,`10` 和 `20` 是传递给函数的参数,`result` 变量接收函数的返回值。
### 2.1.1 函数参数的传递方式
函数参数可以按照以下两种方式传递:
- **值传递:**函数接收参数的副本,对参数的修改不会影响调用函数中的变量。
- **引用传递:**函数接收参数的引用,对参数的修改会影响调用函数中的变量。
**示例:**
```python
# 值传递
def swap_values(a, b):
temp = a
a = b
b = temp
# 引用传递
def swap_references(a, b):
a, b = b, a
a = 10
b = 20
# 值传递
swap_values(a, b)
print(a, b) # 输出:10 20
# 引用传递
swap_references(a, b)
print(a, b) # 输出:20 10
```
### 2.1.2 可变参数函数的定义和使用
可变参数函数允许传递任意数量的参数,这些参数存储在一个元组中。可变参数函数的定义如下:
```python
def sum_numbers(*args):
total = 0
for number in args:
total += number
return total
```
在上面的示例中,`*args` 表示可变参数,它接收任意数量的参数。
### 2.2 函数返回值的类型和处理
函数可以返回一个值,也可以不返回任何值(即 `None`)。函数返回值的类型由函数定义中的 `->` 符号后的类型注释指定。
### 2.2.1 函数返回值的定义和声明
函数返回值的类型注释可以是任何有效的数据类型,例如:
```python
def sum_numbers(a: int, b: int) -> int:
return a + b
```
在上面的示例中,`sum_numbers` 函数接收两个整数参数并返回一个整数。
### 2.2.2 函数返回值的接收和使用
函数的返回值可以通过调用函数后接收到的变量来使用。
**示例:**
```python
result = sum_numbers(10, 20)
print(result) # 输出:30
```
### 2.3 函数的局部变量和全局变量
函数可以访问两种类型的变量:局部变量和全局变量。
### 2.3.1 局部变量的作用域和生命周期
局部变量是在函数内部定义的变量,它们的作用域仅限于该函数。当函数执行完毕后,局部变量将被销毁。
**示例:**
```python
def increment_counter():
counter = 0 # 局部变量
counter += 1
return counter
result = increment_counter()
print(result) # 输出:1
```
### 2.3.2 全局变量的声明和使用
全局变量是在函数外部定义的变量,它们可以在整个程序中访问。要声明一个全局变量,需要使用 `global` 关键字。
**示例:**
```python
counter = 0 # 全局变量
def increment_counter():
global counter
counter += 1
return counter
result = increment_counter()
print(result) # 输出:1
```
# 3.1 函数的封装和代码重用
#### 3.1.1 函数的封装原则和好处
函数封装是一种将代码块组织成独立单元的软件设计技术。它将相关代码和数据打包在一起,形成一个可重用的模块,从而提高代码的可读性、可维护性和可重用性。
函数封装遵循以下原则:
- **单一职责原则:**每个函数只负责一个特定的任务,避免功能杂乱。
- **高内聚低耦合:**函数内部代码紧密相关,与外部代码的依赖性较低。
- **信息隐藏:**函数的内部实现细节对外部代码透明,只暴露必要的接口。
封装的好处包括:
- **提高代码可读性:**将代码组织成模块化单元,便于理解和维护。
- **增强代码可维护性:**函数作为独立单元,修改或更新时不会影响其他代码。
- **促进代码重用:**封装的函数可以轻松地在不同的程序或模块中重用,避免重复编码。
#### 3.1.2 代码重用带来的效率提升
代码重用是指在多个程序或模块中使用相同的代码块。函数封装提供了代码重用的机制,带来以下效率提升:
- **减少重复编码:**通过封装常用的代码块为函数,避免在不同地方重复编写相同的代码。
- **提高开发效率:**重用现有的函数可以节省开发时间,加快项目进度。
- **降低维护成本:**对
0
0