Python新手必学:Ubuntu上Python配置权威指南
发布时间: 2024-12-12 11:20:29 阅读量: 40 订阅数: 29 


VSCode Python环境配置指南:从零开始高效搭建开发环境

# 1. Python简介与安装基础
Python作为一门广泛的编程语言,它的易读性和简洁的语法设计使得开发者可以编写清晰而逻辑的代码。从简单的脚本到复杂的机器学习程序,Python提供了强大的标准库和丰富的第三方模块,能应用于各种领域。
## 1.1 Python的起源与发展
Python是由Guido van Rossum于1989年圣诞节期间为了打发时间而开发的一个编程语言。它的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进来表示代码块,而不是使用大括号或关键字)。随着时间的推移,Python已经发展成为一个成熟的编程语言,被广泛应用于Web开发、数据分析、人工智能、科学计算等多个领域。
## 1.2 安装Python的步骤
安装Python是开始学习和使用Python的第一步。通常,可以从Python官方网站下载安装包,但为了保证系统内Python版本的统一性和便于管理,推荐使用系统自带的包管理工具进行安装。
对于Windows用户,可以通过Python官方网站下载安装程序,并遵循安装向导进行安装。而对于Linux或MacOS用户,则通常可以通过系统的包管理器安装Python。比如在Ubuntu系统中,可以通过以下命令来安装Python:
```bash
sudo apt-get update
sudo apt-get install python3
```
以上命令会下载并安装最新的Python 3.x版本。安装完成后,您可以通过输入`python3 --version`命令来检查Python是否正确安装。
安装Python是进入Python编程世界的第一步,本章节会为初学者提供一个简单的入门指南,并为有经验的开发者复习安装基础。随着读者继续深入阅读本书,您将能够掌握更多高级特性和最佳实践。
# 2. Python环境配置详解
### 2.1 Python版本选择与安装
#### 2.1.1 选择合适的Python版本
在开始Python开发之前,确定选择哪个版本的Python是至关重要的。Python有多个版本,包括2.x系列和3.x系列。尽管Python 2在2020年已经停止官方支持,但在一些遗留系统中可能还在使用。推荐新项目使用Python 3,因为它具有更好的性能、更多的功能和更大的社区支持。此外,您还应该考虑所使用库的兼容性,因为有些库可能尚未更新以支持Python 3。
#### 2.1.2 在Ubuntu上安装Python
Ubuntu默认使用Python 2.x,但安装Python 3相对简单。您可以使用以下步骤来安装Python 3:
```bash
sudo apt update
sudo apt install python3 python3-pip
```
执行完上述命令后,您可以使用`python3`和`pip3`命令来分别启动Python 3解释器和管理Python包。为了确保`python`命令指向Python 3,可以创建一个符号链接:
```bash
sudo ln -s /usr/bin/python3 /usr/bin/python
```
验证安装是否成功,您可以在终端中输入`python --version`来检查Python版本。
### 2.2 虚拟环境管理工具的使用
#### 2.2.1 virtualenv工具的安装与配置
虚拟环境(virtual environment)允许您为每个项目创建隔离的Python环境,其中可以安装不同的包版本,而不会相互影响。`virtualenv`是一个流行的工具,用于创建这样的环境。
要安装`virtualenv`,执行以下命令:
```bash
pip install virtualenv
```
创建一个名为`myenv`的虚拟环境:
```bash
virtualenv myenv
```
要激活虚拟环境,使用以下命令:
```bash
source myenv/bin/activate
```
退出虚拟环境:
```bash
deactivate
```
#### 2.2.2 pipenv工具的安装与配置
`pipenv`是一个更现代的虚拟环境管理工具,它自动创建和管理`Pipfile`,用于追踪项目依赖。它同时管理虚拟环境,无需手动创建。首先,安装`pipenv`:
```bash
pip install --user pipenv
```
创建一个新的项目环境:
```bash
mkdir myproject && cd myproject
pipenv --python 3.8
```
进入项目环境:
```bash
pipenv shell
```
安装包到项目环境:
```bash
pipenv install requests
```
您可以使用`pipenv graph`来查看依赖树。
### 2.3 包管理和依赖解决
#### 2.3.1 pip工具的基本使用
`pip`是Python的包管理器,用于安装、卸载和管理Python包。以下是`pip`的一些基本命令:
- 安装包:`pip install package_name`
- 卸载包:`pip uninstall package_name`
- 列出所有包:`pip list`
- 更新包:`pip install --upgrade package_name`
#### 2.3.2 解决依赖冲突和版本管理
依赖冲突是Python项目中常见的问题。`pip-tools`是一个工具集,用于帮助解决依赖关系的冲突,并保持依赖的一致性。首先安装`pip-tools`:
```bash
pip install pip-tools
```
创建一个`requirements.in`文件,列出所有顶级依赖:
```plaintext
flask
requests
```
生成`requirements.txt`,包含所有解析后的依赖:
```bash
pip-compile requirements.in
```
如果需要更新依赖,可以使用`pip-compile --upgrade`。
要安装`requirements.txt`中列出的所有依赖,运行:
```bash
pip install -r requirements.txt
```
`pip-tools`通过锁文件来确保依赖的一致性,从而有效管理依赖冲突。
| 序号 | 工具 | 功能 |
|------|--------------|--------------------------------|
| 1 | virtualenv | 创建隔离的Python环境 |
| 2 | pipenv | 自动创建和管理虚拟环境及依赖 |
| 3 | pip | 安装、卸载、列出和更新包 |
| 4 | pip-tools | 解决依赖冲突和版本管理 |
在本章节中,我们详细介绍了如何在Ubuntu上选择和安装合适的Python版本,以及如何使用`virtualenv`和`pipenv`管理虚拟环境。同时,我们也探讨了使用`pip`进行包管理的基本操作,以及如何利用`pip-tools`解决依赖冲突和管理版本。这些技能对于配置一个整洁、高效的开发环境至关重要。
# 3. Python基础语法与实践
### 3.1 数据类型与变量
#### 3.1.1 理解Python的基本数据类型
Python作为一门动态类型语言,其数据类型丰富多样,能够轻松应对多种编程场景。基本数据类型包括了数字类型(整型、浮点型、复数)、字符串、布尔类型等。Python 3.x不再支持Python 2.x中的长整型和八进制字面量表示,这简化了数字类型。字符串在Python中是一个序列类型,支持Unicode编码,这使得处理国际化文本更加方便。
此外,Python中还有一类不可变的复合数据类型,如元组(tuple),它是一种不可变序列,常用于存储异构数据。列表(list)则是一种可变序列,可以动态地添加或删除元素。字典(dict)和集合(set)则是无序的,分别用于存储键值对和唯一元素。
在编程实践中,理解这些数据类型的特点对于写出高效且优雅的代码至关重要。例如,使用字典和集合可以有效地处理查找和去重问题,而列表的可变性让其在排序和筛选数据时显得异常灵活。
```python
# 示例代码:展示基本数据类型的应用
num = 42 # 整型
pi = 3.14159 # 浮点型
is_true = True # 布尔类型
greeting = "Hello, Python!" # 字符串
coordinates = (0, 1, 2) # 元组
names = ['Alice', 'Bob', 'Charlie'] # 列表
person = {'name': 'Diana', 'age': 30} # 字典
unique_numbers = {1, 2, 3} # 集合
```
#### 3.1.2 变量的声明和作用域
在Python中,变量的声明非常简洁。你只需要为变量赋予一个值即可创建它。由于Python是动态类型语言,不需要显式声明变量类型。变量的作用域决定了其可访问性范围,Python中变量作用域主要分为局部作用域、封闭作用域、全局作用域和内建作用域。
```python
x = 'global' # 全局变量
def outer():
y = 'enclosing' # 封闭作用域变量
def inner():
x = 'local' # 局部作用域变量
print(x, y, z)
inner()
print(x, y)
outer()
# print(x) # 这行会报错,因为全局变量x在inner函数外不可见
```
### 3.2 控制流程
#### 3.2.1 条件控制语句
Python通过`if`、`elif`和`else`关键字提供条件控制功能。它支持任何对象进行真值测试,包括字符串、列表、字典等。空对象和数值零通常被视为False,其余则为True。
```python
def check_age(age):
if age < 18:
print("You are a minor.")
elif 18 <= age < 65:
print("You are an adult.")
else:
print("You are a senior.")
check_age(15)
check_age(30)
check_age(70)
```
#### 3.2.2 循环控制语句
Python使用`for`循环遍历序列类型(如列表、元组、字符串等)和使用`while`循环实现条件循环。`break`可用于立即退出循环,而`continue`则跳过当前循环的剩余部分,直接进入下一次循环。
```python
# for循环示例
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
# while循环示例
i = 0
while i < 3:
print('Looping...')
i += 1
if i == 2:
break # 当i等于2时退出循环
```
### 3.3 函数定义与使用
#### 3.3.1 函数的定义与参数传递
函数是组织代码的基本单位。在Python中,函数使用`def`关键字定义,且支持默认参数、位置参数、任意数量参数等灵活的参数传递方式。
```python
# 定义带有默认参数和位置参数的函数
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
# 调用函数
print(greet("Alice")) # 输出: Hello, Alice!
print(greet("Bob", "Hi")) # 输出: Hi, Bob!
```
#### 3.3.2 匿名函数lambda与递归函数
Python支持匿名函数定义,使用`lambda`关键字来创建。这种函数体通常很简短,并且可以没有名字。递归函数允许函数调用自身,是解决特定问题(如阶乘、树遍历等)的有效手段。
```python
# lambda匿名函数示例
square = lambda x: x * x
print(square(5)) # 输出: 25
# 递归函数示例:计算阶乘
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 输出: 120
```
以上内容详细阐述了Python的基础语法,并通过实例代码展示了各概念的实际应用。在学习和实践过程中,深入理解这些基础概念对于后续开发是十分重要的。随着学习的深入,你将会发现,这些基础知识是构建复杂程序的基石。
# 4. Python开发工具与调试技巧
### 4.1 集成开发环境(IDE)选择与配置
在本节中,我们将探讨如何为Python开发挑选合适的集成开发环境(IDE),并且演示如何对流行的IDE进行配置,以提高我们的开发效率和代码质量。
#### 4.1.1 PyCharm的安装与配置
PyCharm是许多Python开发者首选的IDE,它提供了强大的代码辅助、调试工具和项目管理功能。安装PyCharm主要分为以下几个步骤:
1. 访问JetBrains官方网站下载PyCharm的社区版或者专业版。
2. 根据操作系统下载相应的安装包,例如对于Ubuntu系统,下载的是`.tar.gz`格式的压缩包。
3. 解压下载的压缩包到指定目录,例如可以使用命令 `tar -xzvf pycharm-community-2021.3.tar.gz`。
4. 进入解压后的文件夹,使用命令 `./pycharm.sh` 启动PyCharm。
在首次启动时,需要进行一些基础配置,这包括:
- **选择主题**:PyCharm支持深色和浅色两种主题,你可以根据个人喜好选择。
- **创建项目**:选择创建新项目或者导入现有项目,此时需要指定Python解释器。
- **插件安装**:可以在这里安装一些额外的插件来扩展PyCharm的功能。
接下来,我们配置一些重要的功能,如代码格式化和快捷键映射:
- **代码格式化**:PyCharm支持自定义代码的格式化规则,通过 `File` -> `Settings` -> `Editor` -> `Code Style` -> `Python` 可以修改缩进、空格和换行等。
- **快捷键**:在 `File` -> `Settings` -> `Keymap` 中可以自定义快捷键,以提高开发效率。
#### 4.1.2 Visual Studio Code的安装与配置
Visual Studio Code(VS Code)是另一款流行的代码编辑器,它通过安装Python扩展和其他语言支持,可以成为强大的Python开发环境。下面是安装与配置步骤:
1. 访问VS Code官网下载适用于Ubuntu的安装包。
2. 安装下载的`.deb`包,使用命令 `sudo apt install ./<package-name>.deb`。
3. 安装完成后,通过 `code .` 在终端启动VS Code。
VS Code的Python扩展由微软官方提供,安装后可以得到丰富的Python开发支持:
1. 在VS Code的扩展市场中搜索并安装 `Python` 扩展。
2. 通过 `Ctrl+Shift+P` 打开命令面板,输入 `Python: Select Interpreter` 来选择合适的Python解释器。
为了提高开发效率,建议进行以下配置:
- **自动补全和代码提示**:安装Python扩展后,VS Code会自动支持Python代码的补全和代码提示。
- **调试配置**:通过 `Run` -> `Add Configuration...` 可以添加Python调试配置,然后在需要的地方设置断点调试。
### 4.2 代码调试技巧
代码调试是开发过程中的重要环节,它可以帮助我们快速定位和修复代码中的错误。本节我们将学习如何使用Python的内置调试工具,以及如何利用Python Debugger(PDB)进行源码调试。
#### 4.2.1 Python的内置调试工具
Python标准库中的 `pdb` 模块提供了一个交互式的源代码调试器。使用 `pdb` 可以在代码中设置断点,单步执行代码,并查看变量的值。使用方式如下:
```python
import pdb; pdb.set_trace()
```
在代码中的适当位置加入上述代码,当运行到此行代码时,程序会暂停,这时可以进行以下操作:
- **查看变量**:直接输入变量名查看变量值。
- **执行代码**:使用命令 `n` 单步执行代码,或者 `c` 继续执行到下一个断点。
- **查看堆栈**:使用命令 `bt` 查看当前的调用堆栈。
#### 4.2.2 使用PDB进行源码调试
为了更加深入地理解 `pdb` 的使用,我们来看一个简单的例子:
```python
def calculate_area(radius):
import pdb; pdb.set_trace()
return 3.14 * radius * radius
def main():
radius = float(input("请输入半径: "))
result = calculate_area(radius)
print(f"面积是: {result}")
if __name__ == '__main__':
main()
```
在这个例子中,我们通过 `pdb` 在 `calculate_area` 函数内设置了一个断点。当用户输入半径后,程序会暂停,我们可以在 `pdb` 的交互界面中查看变量 `radius` 的值,并且单步跟踪 `calculate_area` 函数的执行。
### 4.3 性能分析工具
性能分析是提高代码执行效率的关键步骤。本节我们将学习如何使用Python的性能分析工具 `cProfile` 和 `memory_profiler` 来分析代码执行性能和内存使用情况。
#### 4.3.1 cProfile性能分析
`cProfile` 是Python标准库提供的一个性能分析工具,它可以追踪程序运行时每个函数的调用次数和时间,以帮助开发者找出性能瓶颈。使用 `cProfile` 的基本用法如下:
```python
import cProfile
def my_function():
# 这里写上你想要分析的函数代码
cProfile.run('my_function()')
```
当运行上述代码时,`cProfile` 会显示所有被 `my_function` 函数调用的函数及其执行情况的统计信息。
#### 4.3.2 使用内存分析工具识别内存泄漏
内存泄漏是导致程序运行缓慢和崩溃的常见原因。为了帮助开发者找出内存泄漏,我们可以使用 `memory_profiler` 库。首先需要安装 `memory_profiler`:
```bash
pip install memory_profiler
```
然后可以使用 `@profile` 装饰器来标记需要分析内存的函数:
```python
from memory_profiler import profile
@profile
def my_memory_hogging_function():
# 这里写上你想要分析的内存消耗大的代码
```
之后,通过 `python -m memory_profiler script.py` 命令来运行脚本,它会显示每一行代码的内存消耗情况。
### 4.3.3 性能分析工具实践案例
为了更深入理解性能分析工具的使用,让我们通过一个具体案例来实践:
假设我们有一个简单的列表生成函数,我们希望分析其内存使用情况:
```python
import random
from memory_profiler import profile
@profile
def create_large_list(size):
return [random.randint(0, 100) for _ in range(size)]
if __name__ == "__main__":
create_large_list(100000)
```
运行上述代码,`memory_profiler` 将会输出列表中每个元素添加时内存的变化情况,从而帮助我们发现是否存在问题。
通过本节的介绍,我们可以看到,合理地使用开发工具和调试技巧,对于提升代码质量、性能优化以及问题的快速解决都有着不可估量的作用。从选择合适的IDE到使用性能分析工具,每个步骤都应成为Python开发者日常工作的重要部分。
# 5. 高级Python应用实践
## 5.1 文件操作与数据处理
### 文件读写与上下文管理
文件操作是任何编程语言中不可或缺的一部分。在Python中,文件读写操作既直观又简单。文件操作通常包括打开文件、读取文件内容、修改内容、添加内容、关闭文件等步骤。Python中打开文件的语句是 `open()`,它返回一个文件对象。以下是一个简单的例子:
```python
# 打开文件,读取内容
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 写入内容到文件
with open('example.txt', 'w') as file:
file.write('Hello, Python!')
```
这里使用了`with`语句,它是上下文管理器的一个重要实践,用于确保文件正确关闭,即使在发生错误时也能保证文件资源的正确释放。
### 数据处理与分析库Pandas入门
数据处理是数据分析和科学计算中常见的任务,Python中处理这类问题的一个强大库是Pandas。它提供了大量的数据结构和功能,特别是用于操作表格型数据。
Pandas有两种核心数据结构,Series和DataFrame。Series是一维的,而DataFrame是二维的。以下是如何使用Pandas进行基本的数据操作:
```python
import pandas as pd
# 从CSV文件读取数据到DataFrame
df = pd.read_csv('data.csv')
# 显示前5行数据
print(df.head())
# 选择数据框中的某列
print(df['Column1'])
# 基本的数据筛选
filtered_data = df[df['Column1'] > 10]
print(filtered_data)
```
使用Pandas之前,通常需要先安装它:
```bash
pip install pandas
```
### 5.2 网络编程与异步I/O
#### 使用requests库进行HTTP通信
在Python中进行网络通信通常会使用requests库,它是一个非常受欢迎的第三方库,用于发送HTTP请求。安装requests库非常简单:
```bash
pip install requests
```
以下是如何使用requests库发起一个GET请求:
```python
import requests
# 发起GET请求
response = requests.get('https://api.example.com/data')
# 检查请求是否成功
if response.status_code == 200:
print("Success!")
print(response.json()) # 假设返回的是JSON格式数据
else:
print("Failed.")
```
#### 异步编程模式的理解与实践
异步编程让程序可以在等待一个长时间的任务(如网络请求)时继续执行其他任务。在Python中,`asyncio`模块提供了对异步I/O的支持。
以下是一个异步编程的简单示例:
```python
import asyncio
async def get_data():
# 异步网络请求
response = await asyncio.open_connection('api.example.com', 80)
print('Received:', await response[0].read())
response[1].close()
# 运行异步函数
asyncio.run(get_data())
```
### 5.3 测试驱动开发与部署
#### 单元测试框架unittest和pytest
单元测试是确保代码质量的关键部分。在Python中,unittest和pytest是两个流行的单元测试框架。
以下是一个使用unittest进行测试的简单例子:
```python
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
if __name__ == '__main__':
unittest.main()
```
而pytest提供了更简洁的测试方式:
```python
# test_example.py
def test_upper():
assert 'foo'.upper() == 'FOO'
def test_isupper():
assert 'FOO'.isupper()
assert not 'Foo'.isupper()
```
运行pytest测试:
```bash
pytest test_example.py
```
#### 将Python应用部署到生产环境
将应用部署到生产环境是一个复杂的过程,但也有许多工具可以帮助自动化这个过程。Docker是一个流行的选项,它允许你将应用程序和其运行环境打包成一个容器。
部署Python应用到生产环境的一般步骤包括:
1. 依赖管理:确保所有依赖项都记录在`requirements.txt`文件中。
2. 配置文件管理:使用环境变量来管理配置,而不是将配置硬编码在代码中。
3. 构建镜像:使用Dockerfile来指定Python版本、安装依赖和应用代码。
4. 运行容器:使用Docker命令运行你的容器,确保应用在隔离环境中运行。
下面是一个简单的`Dockerfile`示例:
```Dockerfile
FROM python:3.8
# 设置工作目录
WORKDIR /usr/src/app
# 将依赖文件复制到容器中并安装
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# 将应用代码复制到容器中
COPY . .
# 声明运行时端口
EXPOSE 8000
# 启动应用
CMD [ "python", "./app.py" ]
```
接下来,构建并运行Docker镜像:
```bash
docker build -t myapp .
docker run -d -p 8000:8000 --name my-running-app myapp
```
这只是一个概述,实际上部署过程会根据应用需求、环境和安全要求有所不同。
通过本章节的介绍,我们深入探讨了Python在文件操作、网络编程、测试和部署方面的高级应用。读者应该对如何使用Pandas处理数据、使用requests进行网络通信、编写单元测试以及使用Docker部署应用有了一个基本的理解。这些技能对于构建高效、可维护的Python应用至关重要。
# 6. Python在Ubuntu系统管理中的应用
## 6.1 自动化脚本编写
Python在自动化任务方面的能力是其在系统管理中应用广泛的原因之一。编写自动化脚本能够帮助管理员更有效地管理系统的日常任务。
### 6.1.1 编写自动化任务脚本
自动化任务脚本可以用于多种场合,比如定期备份文件、定时清理日志文件等。Python提供了非常丰富的模块来帮助我们完成这些任务,例如 `os` 和 `shutil` 模块可以用于文件操作,`datetime` 模块可以用来处理日期和时间。
假设我们需要编写一个脚本,每天凌晨3点自动备份`/var/log/syslog`文件到`/backup`目录下:
```python
import os
import shutil
import datetime
def backup_log_file(src, dst, filename):
# 构建目标备份文件名
backup_filename = "{}/{}-{}.bak".format(dst, filename, datetime.datetime.now().strftime("%Y%m%d"))
# 构建完整的源文件路径
source_log_file = os.path.join(src, filename)
# 检查源文件是否存在
if os.path.isfile(source_log_file):
# 复制文件到目标路径
shutil.copy(source_log_file, backup_filename)
print("Backup completed successfully.")
else:
print("Source file does not exist.")
# 设置源文件路径和目标目录
source_dir = "/var/log"
destination_dir = "/backup"
backup_log_file(source_dir, destination_dir, "syslog")
```
### 6.1.2 系统监控与日志分析
Python同样可以用来实现系统监控和日志分析功能。比如,我们想要监控系统的磁盘空间使用率,并在磁盘空间低于某个阈值时发送警告:
```python
import os
def check_disk_usage(threshold=10):
# 获取根目录的磁盘使用率
usage = os.popen("df -h / | tail -1 | awk '{print $5}'").read().strip()
percent = float(usage.strip('%'))
if percent > threshold:
print("Warning! Disk usage is above {}%.".format(threshold))
else:
print("Disk usage is normal.")
# 检查当前磁盘使用率
check_disk_usage()
```
## 6.2 Python与Linux系统交互
Python提供了多种方式与Linux系统进行交互,利用这些交互能力,我们可以在Python程序中执行系统命令,并与系统服务进行交互。
### 6.2.1 使用subprocess模块执行系统命令
`subprocess`模块是Python中强大的模块之一,它允许我们执行系统命令,并与这些命令的输入输出进行交互。例如,我们可以使用subprocess执行`ping`命令并捕获输出结果:
```python
import subprocess
def ping_host(hostname):
# 构造ping命令
command = ["ping", "-c", "4", hostname]
# 执行命令并获取结果
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 获取标准输出
output = result.stdout.decode()
return output
# 执行并打印ping命令的结果
print(ping_host("www.google.com"))
```
### 6.2.2 Python脚本与系统服务的交互
Python脚本可以与系统服务进行交互,比如启动、停止或检查服务的状态。以下是一个使用Python控制Apache服务的示例:
```python
import os
import sys
def control_service(service_name, action):
if action not in ['start', 'stop', 'restart', 'status']:
print("Invalid action.")
return
if sys.platform.startswith('linux'):
# 使用systemd控制服务
systemctl_cmd = "systemctl {} {}".format(action, service_name)
os.system(systemctl_cmd)
else:
print("Unsupported system.")
# 控制服务示例
control_service('apache2', 'restart')
```
以上例子展示了如何使用Python脚本来管理Linux系统下的服务。通过编写具有特定功能的Python脚本,管理员可以极大地简化和自动化日常的系统管理任务。
0
0
相关推荐









