【基础】Python函数与模块
发布时间: 2024-06-26 15:56:06 阅读量: 62 订阅数: 111
![【基础】Python函数与模块](https://img-blog.csdnimg.cn/fe8d515e793f41ff915fb6e4305c46f4.png)
# 2.1 函数参数的传递方式
Python函数的参数传递方式分为值传递和引用传递。
### 2.1.1 值传递
值传递是指函数接收参数时,会复制一份参数值到函数内部。函数内部对参数值的修改不会影响函数外部的变量。
```python
def add_one(x):
x += 1 # 修改函数内部的x值
num = 10
add_one(num)
print(num) # 输出10,函数内部的修改不会影响外部变量
```
### 2.1.2 引用传递
引用传递是指函数接收参数时,会获取参数的引用。函数内部对参数值的修改会直接影响函数外部的变量。
```python
def modify_list(lst):
lst.append(10) # 修改函数内部的lst值
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出[1, 2, 3, 10],函数内部的修改会影响外部变量
```
# 2. Python函数的进阶应用
### 2.1 函数参数的传递方式
#### 2.1.1 值传递
**概念:**
值传递是指将实参的值复制一份传递给形参,形参对实参的修改不会影响实参的值。
**代码示例:**
```python
def swap(a, b):
temp = a
a = b
b = temp
x = 10
y = 20
swap(x, y)
print(x, y) # 输出:10 20
```
**逻辑分析:**
* 函数`swap`中,形参`a`和`b`分别指向了实参`x`和`y`的值。
* 在函数内部,`a`和`b`的值被交换,但由于值传递,实参`x`和`y`的值不会改变。
#### 2.1.2 引用传递
**概念:**
引用传递是指将实参的引用传递给形参,形参对实参的修改会影响实参的值。
**代码示例:**
```python
def swap(a, b):
a[0], b[0] = b[0], a[0]
x = [10]
y = [20]
swap(x, y)
print(x, y) # 输出:20 10
```
**逻辑分析:**
* 函数`swap`中,形参`a`和`b`指向了实参`x`和`y`的引用。
* 在函数内部,`a`和`b`的第一个元素被交换,由于引用传递,实参`x`和`y`的第一个元素也随之改变。
### 2.2 函数的嵌套和递归
#### 2.2.1 函数嵌套
**概念:**
函数嵌套是指在一个函数内部定义另一个函数。
**代码示例:**
```python
def outer_function():
def inner_function():
print("This is an inner function.")
inner_function()
outer_function() # 输出:This is an inner function.
```
**逻辑分析:**
* 外部函数`outer_function`定义了一个内部函数`inner_function`。
* 当外部函数被调用时,内部函数也被调用并执行。
#### 2.2.2 递归函数
**概念:**
递归函数是指一个函数调用自身。
**代码示例:**
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 输出:120
```
**逻辑分析:**
* 递归函数`factorial`计算一个数字的阶乘。
* 如果`n`为0,函数返回1。
* 否则,函数将`n`与`factorial(n-1)`相乘,并继续递归调用自身,直到`n`为0。
### 2.3 函数的装饰器
#### 2.3.1 装饰器的概念和原理
**概念:**
装饰器是一种在不修改函
0
0