全部文章

Google Colab:你的云端 Python 开发神器 全方位指南

第一章:Colab 是什么?为什么它如此受宠?

  • ​官方定义:​ Google Colaboratory,简称 ​​Colab​​,是由 Google 提供的一项​​免费的云端服务​​。它允许你直接在浏览器中编写和执行 ​​Python 代码​​。

  • ​核心本质:​​ 它运行在 ​​Google 的云端服务器​​ 上,本质上是一个 ​​Jupyter Notebook​​ 环境。

  • ​Jupyter Notebook 是什么?​​ 它是一个交互式的计算环境,将​​代码​​、​​代码运行结果​​(文本、图像、图表、视频等)、​​解释性文本​​(Markdown)都整合在同一个文档中。文档由一个个 ​​单元格 (Cell)​​ 组成。非常适合做实验、教学、数据分析和机器学习开发。

  • ​为什么 Colab 对新手和小白如此友好?​

    1. ​完全免费 (基础版):​​ 不需要花钱买电脑配置或云服务器!

    2. ​零配置:​​ 开箱即用!无需自己安装 Python、Anaconda、各种库 (numpypandastensorflowpytorch等),甚至连 CUDA 驱动都不用管!云端环境都帮你配好了。

    3. ​随时随地,有网就行:​​ 只需要一个浏览器和 Google 账号,在任何设备(电脑、平板、甚至手机)上都能写代码、跑模型。

    4. ​强大的计算资源:​​ 免费提供 ​​GPU 和 TPU​​ 加速!对于深度学习、训练大模型来说,这可是神器!(后面会详细介绍如何用)

    5. ​易于分享与协作:​​ 一键生成链接,就能分享你的 Notebook 给别人查看或共同编辑(就像 Google Docs 一样)。

    6. ​集成 Google Drive:​​ 可以轻松读取和保存文件到你自己的 Google 云端硬盘。

    7. ​丰富的免费库预装:​​ 绝大多数数据科学、机器学习需要的 Python 库(如 matplotlibsklearnopencv等)都预装了,直接 import即可。

    8. ​版本控制基础:​​ 可以连接到 GitHub 仓库进行版本管理。

​总结一下:​​ ​​Colab = 免费的云端 Jupyter Notebook + 免费GPU/TPU + 零配置 + 易分享 + Google Drive集成。​​ 它是学习 Python、探索数据科学、入门机器学习和深度学习的完美起点!

第二章:如何开始使用 Colab?(快速上手)

  1. ​准备工作:​

    • 一个 ​​Google 账号​​(Gmail 账号)。

    • 一个稳定的 ​​网络连接​​。

  2. ​找到入口:​

  3. ​创建你的第一个 Notebook:​

    • 打开 Colab 后:

      • 从 文件菜单选择 新建笔记本

      • 或者在欢迎页面的 下方选择 新建笔记本

 

    • 这时会创建一个名为 Untitled*.ipynb的新文件(.ipynb是 Jupyter Notebook 的扩展名)。

    • 点击左上角的文件名(如 Untitled0.ipynb)可以给它重命名(例如 我的第一个Colab实验.ipynb)。

    • ​核心界面熟悉:​​ 默认会创建一个空白 Notebook,包含一个可编辑的单元格 (Cell)。主要功能区:

      • ​菜单栏 (Menu Bar):​​ 文件、编辑、视图、插入、运行时、工具、帮助等。

      • ​工具栏 (Toolbar):​​ 常用按钮(加单元格、运行、中断、重启等)。

      • ​编辑区域:​​ 一个个单元格排列在此。

      • ​侧边栏 (可能需要手动点开):​​ 文件目录 (文件夹图标)、代码片段 (< >图标)、变量查看器等。

  1. ​Hello Colab! - 执行你的第一行代码:​

    • 在默认的第一个单元格里(标记为 代码类型),输入:

      print("Hello, Colab World!")
    • ​如何运行单元格?​​ 有几种方式:

      • 点击单元格左侧的 ​​Play 按钮​​。

      • 将光标放在单元格内,按 Shift + Enter

      • 点击工具栏上的 运行按钮(播放图标)。

    • ​发生了什么?​​ 代码被发送到 Google 的服务器执行,结果会直接显示在单元格下方。你会看到输出:Hello, Colab World!

    • ​小火箭起飞啦!​​ 注意运行时,右上角会出现一个旋转的小圆圈,表示正在连接或执行。连接成功后,圆圈会变成绿色对勾(✅),旁边还会显示运行时类型(如 RAM)和是否使用了加速器。

打开别人分享的项目,如“https://colab.research.google.com/drive/1N7WTdVseHg4pNQpDMENo2aHOfsCS2-If?usp=sharing

注意:colab里所有的项目都需要保存到云端硬盘

查看保存之后的项目:

第三章:核心操作 - 玩转单元格(基础必备)

一个 Colab Notebook 就是由许多​​单元格 (Cell)​​ 组成的。理解单元格是核心!

  1. ​单元格类型:​

    • ​代码 (Code):​​ 默认类型。里面写 Python 代码,运行后输出结果在下方显示。

    • ​文本 (Text):​​ 也叫 ​​Markdown 单元格​​。用于写文档说明、标题、公式、列表等。

      • ​如何创建?​​ 工具栏下拉菜单选择 +代码或 +文本;选择单元格后按 Ctrl + M M(注意按两下M)(Windows/Linux) / Cmd + M M(Mac) 切换为 Markdown;插入菜单 -> 代码单元或 文本单元

      • ​写什么?​​ 在文本单元格中输入 Markdown 语法(非常简单,比如 # 标题, ## 子标题, - 列表项)。

      • ​渲染:​​ 运行(Shift+Enter)后,Markdown 代码会渲染成美观的富文本。

  1. ​单元格操作:​

    • ​添加单元格:​

      • ​上方:​​ 鼠标悬停在已有单元格上半部分 -> 出现 +代码或 +文本按钮。

      • ​下方:​​ 鼠标悬停在已有单元格下半部分 -> 出现 +代码或 +文本按钮。

      • 工具栏:点击 +代码或 +文本按钮(在顶部)。

      • 菜单:插入-> 代码单元或 文本单元

      • 快捷键:单元格下方新建:按 Enter;单元格上方新建:按 Shift + Enter(如果光标在代码单元格内容尾)。

    • ​删除单元格:​​ 选中单元格 -> 工具栏点击 删除按钮(垃圾桶图标)或按 Ctrl + M D(Windows/Linux) / Cmd + M D(Mac)。

    • ​移动单元格:​​ 选中单元格 -> 拖拽左侧移动手柄(六个点的图标)上下移动。

    • ​剪切/复制/粘贴:​​ 右键菜单或快捷键 (Ctrl + X/C/V)。

    • ​运行单元格:​​ 点 左侧的 Play 按钮或 Shift + Enter(运行并移动焦点到下一单元格) 或 Ctrl + Enter(运行并停留在当前单元格)。

    • ​停止运行:​​ 如果代码执行时间太长或陷入死循环,点工具栏 停止按钮(方块图标)。

    • ​折叠/展开输出:​​ 点击输出区域左上角的箭头小图标。

第四章:利用强大资源 - GPU/TPU、更多内存(进阶性能)

免费提供加速器是 Colab 的王牌!

  1. ​启用 GPU 或 TPU:​

    • 点击右上角的 连接按钮(可能显示为 连接或 正在连接,点一下展开下拉菜单)。

    • 选择 更改运行时类型

    • 在弹出的对话框里,将 硬件加速器从 None改为:

      • ​GPU:​​ 适合大多数深度学习任务(TensorFlow, PyTorch)。​​最常用!​

      • ​TPU:​​ Google 自家的加速器,对特定 TensorFlow 模型非常快,但支持度不如 GPU 广泛。

    • 点击 保存

    • ​注意:​​ 修改后 Notebook ​​需要重启运行时!​​ (菜单:运行时-> 重新启动运行时或 工具栏 重新启动按钮 - 两个圆箭头图标)。重启后右上角运行时信息会显示 GPU或 TPU

 

    • ​验证 GPU 是否可用 (PyTorch):​

      import torch
      print(torch.cuda.is_available())  # 输出 True 表示 GPU 可用
      print(torch.cuda.get_device_name(0)) # 打印 GPU 型号(如 T4/Tesla K80)

  1. ​检查当前运行环境:​

    • 运行时-> 管理会话或 右上角点击小圆圈 -> 查看资源。可以看到 CPU、内存、磁盘、GPU 的使用情况。

  1. ​解决 资源耗尽问题:​

    • 免费 Colab 的资源(计算时长、内存、GPU类型)是有限的且有使用配额(有时段限制)。长时间运行大型模型可能会遇到资源不足的错误或连接到较弱的 GPU。

    • ​免费版应对策略:​

      • 优化代码:减少内存占用(如用生成器、删除不必要变量)。

      • 降低批大小 (Batch Size)。

      • 使用更小的模型或数据集。

      • 清理变量:使用 %reset魔法命令(谨慎!会清除所有变量)或在代码中手动删除 del variable_name

      • 重启运行时 (运行时-> 重新启动运行时):相当于重启“电脑”,释放所有资源。

      • 等待或换个时间段重试:配额可能过段时间(几小时)恢复。

    • ​Colab Pro/Pro+:​​ Google 提供付费订阅服务(每月约 10-50 美金),提供更长时间(12/24小时)、更稳定的连接(如 A100 GPU)、更多内存(高达 53GB)和 TPU v3/v4 等高级资源。适合更重的任务或商业用途。

第五章:管理你的文件和数据(数据持久化)

Colab 运行时是临时的!重启或超时后文件会被清理!必须主动保存你的工作!

我们使用Cloab创建的所有项目,文件都会放在/content/目录下,

  1. 临时运行环境

    • 每次你关闭浏览器标签页或断开连接(包括页面超时自动断开)后,Colab 的**运行时(Runtime)会被回收**。
       
      - 回收后,所有在 `/content` 目录下创建的文件和文件夹都会被清除
       
      **文件保存位置**:
       
      - 你在 Colab 中创建的文件默认保存在**临时云存储**中(位于 `/content` 目录)。
       
      - 这个存储空间只在**当前运行时有效**。
    • Colab 每次启动时都会创建一个全新的虚拟机实例

    • 所有未保存的文件都会在以下情况丢失:

      • 关闭浏览器标签页

      • 会话超时(约30分钟无操作)

      • 主动断开运行时

      • 12小时连续运行后(免费版限制)

  1. ​保存 Notebook:​

    • 自动保存:Colab 会自动将你的 .ipynbNotebook 文件保存到你的 ​​Google Drive​​ 中(在名为 Colab Notebooks的文件夹里)。

    • 手动保存:文件-> 保存或 文件-> 在云端硬盘中保存副本

  1. ​访问本地文件 (在你的电脑上):​

    • 文件菜单 -> 上传,选择文件即可上传到当前运行时临时空间。

    • ​注意:​​ 上传的文件在运行时重启后会消失!需要上传或重新加载。

  2. ​挂载 Google Drive:永久存储!​

    • ​最重要、最常用!​​ 将你个人 Google 云端硬盘挂载到 Colab 运行时。

    • ​如何挂载:​

      • 点击左侧边栏的 文件夹图标打开文件资源管理器。

      • 点击 挂载 Drive按钮(右上角带 Google Drive 图标的按钮)。

 

      • 运行弹出的代码单元格,授权访问(点链接,登录并允许)。

      • 成功后,你的 Google Drive 会挂载在 /content/drive路径下(通常后面是 /MyDrive)。

    • 为了永久保存APIKEY.txt,我们可以把它移动到(拖拽到)/content/drive/MyDrive/Colab Notebooks目录下,这样他就永久存到云上了,就是关闭colab也不怕丢失了:
    •  
      • 在云盘查看:

    • ​在代码中使用:​

      from google.colab import drive
      drive.mount('/content/drive')  # 手动运行这个后,只需一次(直到重启运行时)
      
      # 访问你的Drive根目录 (通常是 /content/drive/MyDrive)
      !ls "/content/drive/MyDrive"
      
      # 创建一个目录
      !mkdir -p "/content/drive/MyDrive/Colab_Experiments/MyProject"
      
      # 读取 Drive 里的 CSV 文件 (假设放在 MyProject 文件夹)
      import pandas as pd
      df = pd.read_csv("/content/drive/MyDrive/Colab_Experiments/MyProject/data.csv")
      
      # 保存训练好的模型到 Drive
      model.save("/content/drive/MyDrive/Colab_Experiments/MyProject/my_model.h5")
    • 也可以使用文件管理器侧边栏直接拖放上传/下载文件到挂载的 Drive 文件夹。

  1. ​临时工作目录:​​ 每个运行时默认工作目录是 /content。上传的文件、克隆的 Git 仓库通常在这里。

  1. ​与本地电脑交互 (较少用):​

    • 文件-> 下载:下载 Notebook .ipynb或生成的单个文件。

    • 使用文件管理器侧边栏下载文件。

    • 在代码中用 files.download('filename')
from google.colab import files
files.download('output_image.png')  # 下载名为 output_image.png 的文件到本地

密钥管理

我们经常需要调用API,经常会用带接口密钥,但是密钥又很难记忆和保存,复制粘贴很麻烦,所以我们可以使用colab来管理密钥:

from google.colab import userdata
api_key = userdata.get('OPENAI_API_KEY')

也可以使用环境变量配置密钥

# 在代码单元格运行
%env OPENAI_API_KEY=sk-...

 

第六章:协作与分享(高效团队合作)

  1. ​分享 Notebook 链接:​

    • 点击右上角的 共享按钮。

    • 设置链接的访问权限:任何知道链接的人(可查看/可编辑)或特定人员

    • 复制链接并发送给对方。

    • 很像分享 Google Docs/Sheets。

  2. ​与他人实时协作:​

    • 分享链接时设置了 可编辑权限。

    • 被分享的用户打开链接后,可以像编辑 Google Doc 一样,同时编辑同一个 Notebook。

    • 会看到不同用户的光标和修改,能及时沟通(可能需要借助聊天工具)。

  3. ​使用评论 (Comments):​​ 可以在特定单元格或文本上添加评论,进行异步讨论。

第七章:常用技巧与小魔法(提升效率)

  1. ​命令前缀 !:​​ 在代码单元格中,任何以 !开头的行都会被视为 ​​系统 Shell 命令​​ 来执行!非常有用!

    # 安装额外需要的库 (使用 pip)
    !pip install package_name
    !pip install -r requirements.txt  # 安装requirements文件中的库
    
    # 安装 APT 包 (较少用)
    !apt-get install -y some-system-tool
    
    # 系统命令:列出文件
    !ls -l
    # 创建目录
    !mkdir my_new_dir
    # 移动文件
    !mv source_file destination
  2. %魔法命令 (Magic Commands):​​ Jupyter 特有的快捷命令。

    • %run:运行另一个 Python 脚本 %run my_script.py

    • %load:将一个文件内容加载到单元格中 %load my_script.py

    • %lsmagic:列出所有可用的魔法命令。

    • %history:查看命令历史。

    • %%writefile:将单元格内容写入文件 %%writefile hello.py

    • %%bash%%shell:将此单元格所有内容作为 Shell 脚本运行。

    • %matplotlib inline:使 matplotlib绘制的图​​显示在 Notebook 中​​(常在绘图前使用)。

  3. ​快捷键:​​ 大幅提升效率!按 Ctrl + M H(Windows/Linux) 或 Cmd + M H(Mac) 查看所有快捷键列表。记住几个常用的:

    • ​运行当前单元格:​​ Ctrl + Enter(留在本单元格) / Shift + Enter(运行后选下一个单元格)。

    • ​在当前单元格上方插入代码单元格:​​ EscA

    • ​在当前单元格下方插入代码单元格:​​ EscB

    • ​删除当前单元格:​​ EscDD(连按两次D)。

    • ​将当前单元格切换为 Markdown:​​ EscM M

    • ​将当前单元格切换为代码:​​ EscM Y

    • ​进入/退出命令模式:​​ EscEnter(命令模式下,单元格左边线蓝色;编辑模式下绿色)。

  4. ​代码自动补全:​​ 在代码单元格输入时,按 Tab键触发。极大方便敲代码。

  5. ​查看函数/类帮助文档:​​ 在函数或类名后面加上 ?,然后运行单元格,会在下方显示帮助文档。例如 print?

  1. ​连接到 GitHub:​

    • 文件-> 打开 Notebook-> 上方 GitHub标签页,输入仓库URL或搜索用户/仓库名。

    • 在文件中直接打开 .ipynb

    • 也可以 !git clone https://github.com/username/repo.git命令克隆整个仓库到 /content

  2. ​管理多个 Notebook:​​ 在 文件-> 打开 Notebook中查看你所有的 Colab Notebooks (保存在 Google Drive 的 Colab Notebooks文件夹)。

  3. ​终止闲置的运行时:​​ 长时间不活动的 Notebook(默认为30分钟),其运行时会自动断开以释放资源。回来时点“连接”按钮重新连接即可(环境变量和挂载的 Drive 还在,内存清空)。

第八章:适合新手的练手项目(实践出真知)

  1. ​数据探索与可视化:​

    • 使用 pandas读取挂载的 Drive 或在线数据源(如 !wget URL下载)的一个 CSV 文件(例如房价数据)。

    • 用 pandas查看数据结构、统计信息、处理缺失值。

    • 用 matplotlib或 seaborn绘制各种图表(折线图、柱状图、散点图)探索数据关系。

  2. ​经典机器学习:​

    • 使用 sklearn

      • 加载内置数据集(如鸢尾花 iris)。

      • 划分训练集/测试集。

      • 训练一个分类模型(如 SVMKNN决策树)。

      • 在测试集上评估性能(计算准确率等)。

      • 可视化决策边界。

  3. ​简单深度学习 (开启 GPU!):​

    • ​TensorFlow/Keras 示例 - MNIST 手写数字识别:​

      import tensorflow as tf
      from tensorflow.keras.datasets import mnist
      from tensorflow.keras.models import Sequential
      from tensorflow.keras.layers import Dense, Flatten
      (x_train, y_train), (x_test, y_test) = mnist.load_data()
      x_train, x_test = x_train / 255.0, x_test / 255.0  # 归一化
      # 建立简单全连接网络
      model = Sequential([
          Flatten(input_shape=(28, 28)),
          Dense(128, activation='relu'),
          Dense(10, activation='softmax')
      ])
      model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
      model.fit(x_train, y_train, epochs=5)  # 训练5轮,观察效果(用GPU很快)
      model.evaluate(x_test, y_test)
      # 预测单个图片
      import numpy as np
      prediction = model.predict(x_test[0:1])
      print("Predicted digit:", np.argmax(prediction))
      print("Actual digit:", y_test[0])
      Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
      11490434/11490434 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step
      /usr/local/lib/python3.11/dist-packages/keras/src/layers/reshaping/flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
        super().__init__(**kwargs)
      Epoch 1/5
      1875/1875 ━━━━━━━━━━━━━━━━━━━━ 7s 3ms/step - accuracy: 0.8766 - loss: 0.4305
      Epoch 2/5
      1875/1875 ━━━━━━━━━━━━━━━━━━━━ 7s 2ms/step - accuracy: 0.9662 - loss: 0.1183
      Epoch 3/5
      1875/1875 ━━━━━━━━━━━━━━━━━━━━ 5s 2ms/step - accuracy: 0.9775 - loss: 0.0770
      Epoch 4/5
      1875/1875 ━━━━━━━━━━━━━━━━━━━━ 5s 2ms/step - accuracy: 0.9835 - loss: 0.0526
      Epoch 5/5
      1875/1875 ━━━━━━━━━━━━━━━━━━━━ 5s 2ms/step - accuracy: 0.9872 - loss: 0.0406
      313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.9676 - loss: 0.1112
      1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 314ms/step
    • ​PyTorch 示例:​​ 结构类似,安装 torch后,查找入门 MNIST PyTorch 教程代码尝试。

  4. ​训练一个图像分类器(如猫狗分类):​​ 学习使用迁移学习(ResNetMobileNet等预训练模型),处理自定义数据集(从Drive加载图片)。

  5. ​部署模型(结合 Gradio 教程):​​ 在 Colab 里训练好模型后,用 Gradio 创建一个交互式 Web UI 接口,部署到 Hugging Face Spaces 或临时 Colab URL 分享给别人试用你的模型!

第九章:成为高手的注意事项与最佳实践(精通之道)

  1. ​版本控制(Git):​​ 重要项目一定连接到 GitHub!保存 .ipynb文件即可。文件-> 在云端硬盘中保存副本也可以保存为 .ipynb文件供本地使用。

  2. ​模块化:​​ 不要把所有代码堆在一个巨大单元格里。将相关功能分组到单元格中,用 Markdown 标题清晰分隔。复杂代码可以写成 Python 模块(.py文件)保存到 Drive,在 Notebook 中用 import

  3. ​注释和文档:​​ 大量使用 Markdown 单元格解释你的思路、步骤、代码块的作用和重要参数。清晰明了的 Notebook 价值巨大!写代码本身也要加好注释。

  4. ​重现性 (Reproducibility):​

    • 使用 pip freeze > requirements.txt命令保存所有安装包版本。

    • 设置随机种子 (np.random.seed(42)tf.random.set_seed(42))。确保代码多次运行结果一致。

    • ​清理重启测试:​​ 在最终分享或存档前,重启运行时(清空所有内存变量),然后按顺序重新运行所有单元格 (运行时-> 全部运行或 运行时-> 重新运行全部之前运行),确保从头到尾能正确无误执行。

  5. ​资源管理意识:​​ 监控内存使用(右上角)。及时 del不需要的大变量。避免创建超大列表或数据集。合理使用 GPU(训练时开启,平时关闭)。

  6. ​数据备份:​​ Notebook 自动存 Drive,但重要输入数据、输出模型/结果也要及时保存到你的 Google Drive 挂载目录或其他地方。别依赖临时目录!

  7. ​探索 工具菜单:​​ 里面有 设置(修改编辑器主题、字体)、命令面板(类似 VSCode 的 Ctrl+P)、代码片段(预存常用代码块)等实用功能。

  8. ​拥抱社区:​​ Colab 有庞大的用户群。遇到问题(如库安装、环境冲突)善用 Google和 Stack Overflow搜索。错误信息往往能直接找到解答。

  9. ​尝试 Colab Pro (按需):​​ 如果基础免费版在资源/时长上真的限制了你的学习或工作进展,可以考虑升级 Pro/Pro+ 获取更稳定强大的资源。

总结:你的 Colab 学习路径图

  1. ​入门 (Level 1):​​ 理解概念 -> 创建 Notebook -> 运行 Hello World -> 玩转代码/文本单元格 -> 学会保存和简单文件操作。

  2. ​上手 (Level 2):​​ 学会挂载 Google Drive -> 上传自己的数据集 -> 安装额外库 (!pip install) -> 运行简单的数据处理、机器学习、深度学习示例项目 -> 开启 GPU 体验加速!

  3. ​熟练 (Level 3):​​ 掌握常用魔法命令和快捷键 -> 编写结构清晰、文档完备的 Notebook -> 使用 GitHub 版本控制 -> 实践端到端项目(从加载数据到模型训练评估)-> 了解免费资源限制及应对策略。

  4. ​精通 (Level 4):​​ 高效管理大型项目 -> 深挖高级功能 (TPU, 资源监控) -> 产出高质量、可复现的结果和报告 -> 将 Colab 与其他工具(如 Gradio, BigQuery, Vertex AI)无缝集成 -> 成为团队协作核心 -> 按需评估是否使用 Colab Pro。

​行动号召:​

  1. ​现在就去打开​​ https://colab.research.google.com/

  2. 创建你的第一个 Notebook,命名并保存它。

  3. 运行 print("I'm starting my Colab journey!")

  4. 尝试挂载你的 Google Drive (drive.mount('/content/drive')) 。

  5. ​选择一个感兴趣的练手项目​​(比如 MNIST 手写识别),​​复制代码过去跑通它!​​ (记得开 GPU)。

  6. 遇到问题?别怕,回顾本文、查文档、善用搜索!

​恭喜你!​​ 阅读完这份详细指南,你已经掌握了从零开始使用 Google Colab 的知识体系。它将成为你学习 Python、探索 AI/数据科学世界的重要跳板和得力助手。开始你的云端编程之旅吧!祝你学习愉快,收获满满!

posted @ 2025-07-22 11:55  指尖下的世界  阅读(717)  评论(0)    收藏  举报