【基础】Python函数与模块介绍
发布时间: 2024-06-27 19:22:12 阅读量: 63 订阅数: 103
![【基础】Python函数与模块介绍](https://img-blog.csdnimg.cn/20200824112901612.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyODczNDc5,size_16,color_FFFFFF,t_70)
# 2.1 函数参数和返回值
### 2.1.1 位置参数和关键字参数
位置参数是按照函数定义中的顺序传递给函数的,而关键字参数则使用参数名作为键,将值传递给函数。位置参数必须按照定义的顺序传递,而关键字参数可以按照任意顺序传递。
```python
def my_function(a, b, c):
print(a, b, c)
my_function(1, 2, 3) # 位置参数
my_function(c=3, b=2, a=1) # 关键字参数
```
# 2. Python函数进阶
### 2.1 函数参数和返回值
#### 2.1.1 位置参数和关键字参数
**位置参数**是指在函数定义时,按照从左到右的顺序排列的参数。调用函数时,必须按照定义时的顺序提供对应的参数值。
```python
def add_numbers(a, b):
return a + b
```
调用示例:
```python
result = add_numbers(1, 2) # 位置参数
```
**关键字参数**是指在函数定义时,使用参数名作为参数的标识。调用函数时,可以按照任意顺序提供参数值,并使用参数名与参数值进行匹配。
```python
def add_numbers(a, b):
return a + b
```
调用示例:
```python
result = add_numbers(b=2, a=1) # 关键字参数
```
#### 2.1.2 默认参数和可变参数
**默认参数**是指在函数定义时,为参数指定一个默认值。如果调用函数时不提供该参数值,则使用默认值。
```python
def add_numbers(a, b=0):
return a + b
```
调用示例:
```python
result = add_numbers(1) # 使用默认值
result = add_numbers(1, 2) # 覆盖默认值
```
**可变参数**是指在函数定义时,使用 `*args` 或 `**kwargs` 来接收任意数量的位置参数或关键字参数。
* `*args` 接收位置参数,并将其存储为一个元组。
* `**kwargs` 接收关键字参数,并将其存储为一个字典。
```python
def print_args(*args):
for arg in args:
print(arg)
```
调用示例:
```python
print_args(1, 2, 3, 4) # 位置参数
```
```python
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(key, value)
```
调用示例:
```python
print_kwargs(name="John", age=30) # 关键字参数
```
### 2.2 函数作用域和闭包
#### 2.2.1 作用域的概念和规则
**作用域**是指变量或函数可以在哪些代码块中被访问。在 Python 中,作用域分为:
* **局部作用域:**在函数内部定义的变量或函数,只能在该函数内部访问。
* **全局作用域:**在函数外部定义的变量或函数,可以在整个程序中访问。
作用域规则:
* 局部变量优先于全局变量。
* 如果局部变量和全局变量同名,则局部变量会覆盖全局变量。
* 嵌套函数可以访问其外部作用域中的变量。
#### 2.2.2 闭包的定义和应用
**闭包**是指一个内层函数可以访问其外部作用域中的变量,即使外部函数已经返回。
```python
def outer_function():
x = 10
def inner_function():
return x
return inner_function
```
调用示例:
```python
inner_function = outer_function()
result = inner_function() # 仍然可以访问外部作用域中的变量 x
```
闭包可以用于创建状态保持的函数,在需要保存状态的场景中非常有用。
# 3.1 模块的导入和使用
#### 3.1.1 import语句的用
0
0