python实践思路(草拟计划+方法)

恭喜自己差不多如期完成了python第一阶段目标!ai解答学习方向!

1 要怎么做才能真正自如地使用python?

我现在过了一遍python 的大致代码框架,接下来我要怎么做才能真正自如地使用python,是不是刷leetcode,牛客,然后github上开源项目?

================

过了 Python 的基础框架后,想要真正 "自如使用",核心在于将知识与实践结合,从 "看懂代码" 到 "能独立解决问题"。刷 LeetCode、牛客和参与开源项目是很好的方向,但需要结合阶段目标逐步推进,避免直接陷入 "无从下手" 的困境。以下是分阶段的具体建议:

第一阶段:巩固基础,解决 "能用 Python 做什么" 的问题

刚学完框架时,可能对 "Python 能实际解决哪些问题" 没有清晰认知,此时需要通过小而具体的任务熟悉语法细节和常用库,建立 "用代码解决问题" 的思维。

1. 聚焦 "实用场景" 练手,熟悉常用库

Python 的强大在于丰富的库,脱离库的使用谈 "自如" 意义不大。从以下场景入手,每个场景做 1-2 个小项目:

  • 数据处理与分析 :用pandas处理 Excel/CSV 表格(如统计学生成绩、分析销售数据)、用matplotlib/seaborn画折线图 / 柱状图。
    示例任务:爬取某电商平台的商品价格数据,用 pandas 清洗后,画一个 "价格分布直方图"。
  • 自动化脚本 :用os/shutil处理文件(如批量重命名照片、按日期分类文件)、用smtplib发邮件提醒、用selenium自动填写表单。
    示例任务:写一个脚本,每天自动备份指定文件夹到云盘(如结合百度云 API)。
  • 简单工具开发 :用tkinter/PyQt做带界面的小工具(如简易计算器、待办事项管理器)。
    示例任务:做一个 "图片格式转换器",支持将 jpg 批量转为 png,并调整尺寸。
2. 针对性补语法细节

练手时会频繁遇到 "语法卡壳"(如列表推导式、装饰器、生成器),此时不要死磕,而是带着问题回头补基础

  • 推荐参考《Python 编程:从入门到实践》的 "项目篇",或 B 站 "黑马程序员 Python 实战" 等视频,跟着做完整项目(如外星人入侵游戏、数据可视化案例)。
  • Python Tutor(可视化代码执行过程的网站)分析复杂逻辑(如递归、类的继承),理解内存中变量的变化。

第二阶段:强化逻辑,解决 "复杂问题怎么拆" 的问题

当能独立完成简单任务后,需要提升 "把复杂问题拆解为代码步骤" 的能力,这时候刷算法题(LeetCode、牛客)是核心手段。

1. 算法题训练:从 "会做" 到 "优化"
  • 初期(2-3 个月)

    • 按 "数据类型 + 基础算法" 分类刷题,优先刷 Easy 难度,如:
      • 字符串处理(LeetCode 58. 最后一个单词的长度、125. 验证回文串)
      • 列表 / 字典操作(LeetCode 1. 两数之和、217. 存在重复元素)
      • 简单递归(LeetCode 509. 斐波那契数、104. 二叉树的最大深度)
    • 目标:熟悉 Python 的语法特性(如切片、collections库的defaultdict)在解题中的应用,比如用set快速去重、用enumerate同时获取索引和值。
  • 中期(3-6 个月)

    • 进阶中等难度题目,聚焦 "算法思想"(如动态规划、贪心、BFS/DFS),例如:
      • 动态规划(LeetCode 70. 爬楼梯、300. 最长递增子序列)
      • 字符串匹配(LeetCode 28. 实现 strStr ()、438. 找到字符串中所有字母异位词)
    • 目标:能用 Python 简洁地实现算法(如用列表推导式简化循环、用heapq实现堆排序),并能分析时间 / 空间复杂度。
  • 刷题技巧

    • 先自己想 15 分钟,想不出再看题解,重点看 "题解的思路是如何拆解问题的",而非直接抄代码。
    • 用牛客网的 "Python 专项练习" 补语法细节(如深拷贝 vs 浅拷贝、闭包的使用)。
2. 结合 "场景化题目",避免脱离实际

算法题偏抽象,可穿插牛客的 "企业面试真题"(如 "小红书 Python 工程师笔试题"),这类题常结合实际场景(如处理日志、解析 JSON 数据),更贴近工作需求。

第三阶段:参与实战,解决 "在团队中用 Python" 的问题

当能独立解决中等难度问题后,需要通过开源项目或团队协作,理解 "工程化的 Python 开发"(如代码规范、版本控制、模块设计)。

1. 从 "改开源项目" 到 "提交 PR"
  • 入门级:找 stars 较多且文档友好的项目,从 "修复小 bug" 或 "完善文档" 入手,例如:

    • 工具类:requests(HTTP 库,适合学网络请求)、pandas(适合学数据处理)
    • 应用类:flask(轻量 Web 框架,适合改简单接口)
    • 步骤:先看懂项目的README和贡献指南(CONTRIBUTING.md),运行项目后,找 "good first issue" 标签的任务(通常是简单修复)。
  • 进阶级 :参与功能开发,例如给一个博客系统加 "评论过滤" 功能(用re库处理敏感词),或给数据分析工具加 "导出 Excel" 功能(用openpyxl库)。

2. 自己主导一个小项目,模拟 "完整开发流程"

如果直接参与开源有难度,可自己从零做一个项目,覆盖完整流程:

  • 确定目标:如 "写一个命令行版的记账工具"(支持记录收支、生成月度报表)。
  • 设计模块:拆分功能(数据存储用sqlite3、命令行交互用argparse、报表生成用pandas)。
  • 版本控制:用 Git 管理代码(至少会commit/branch/merge),上传到 GitHub 并写清晰的README
  • 迭代优化:先实现核心功能,再逐步加细节(如数据加密、支持导入银行流水)。

关键心态:避免 "为了刷而刷",以 "解决问题" 为导向

  • 刷算法题的目的是 "训练逻辑",而非 "刷数量",能讲清一道题的 3 种解法,比盲目刷 100 道题更有效。
  • 参与开源项目前,先确保 "能独立看懂项目的核心代码",否则容易半途而废(可从 star 少但代码量小的项目起步)。
  • 遇到卡壳时,多查官方文档(如 Python 官网的标准库文档)和 Stack Overflow,培养 "自主解决问题" 的能力。

按这个路径推进,6-12 个月后,你会明显感受到:面对一个需求,能快速想到 "用 Python 的哪个库 / 语法可以实现",并能独立写出可维护的代码 ------ 这就是 "自如使用" 的状态。

2 没有太细看网课视频,只是过了一遍框架

我觉得不必老老实实按照网课的进度学,按照网课的深度学,编程应该在实践里面掌握,所以我没有太细看视频而是过了一遍知识框架。。(哈、(⊙﹏⊙))

================

你的思路非常务实 ------ 编程本质是 "技能" 而非 "知识",实践确实是掌握它的核心路径。跳过冗余的视频细节、先抓框架再在实践中补细节,这种 "以用代学" 的方式反而更高效,尤其适合避免陷入 "看了一堆视频却依然写不出代码" 的困境。

不过,"跳过细节" 不代表 "完全忽略细节",实践中一定会遇到 "卡壳"(比如不知道用哪个库、语法细节记错),这时候需要把握一个原则:让问题驱动学习,缺什么补什么。结合你的情况,分享几个实践中 "高效补细节" 的技巧:

1. 用 "目标倒推法" 确定学习范围,避免漫无目的

比如你想做一个 "批量下载 B 站视频的脚本",不用先学完所有 Python 知识,而是:

  • 拆解目标:需要 "解析视频链接"→"发送网络请求"→"保存视频到本地"→"批量处理多个链接"。
  • 针对性补知识:
    • 网络请求:查requests库的get方法怎么用(不用看完整教程,直接搜 "requests 下载文件")。
    • 解析链接:可能需要re库(正则表达式)提取视频 ID,或者BeautifulSoup解析网页(学最基础的find/find_all即可)。
    • 批量处理:用for循环遍历列表,或者argparse接收命令行参数(学怎么定义参数即可)。

核心:每个小目标只学 "刚好够用" 的知识,多余的暂时不管,避免被无关细节拖累。

2. 把 "卡壳" 变成 "知识点锚点",建立自己的 "问题 - 解法" 库

实践中遇到的每个错误(如IndentationErrorKeyError)、每个想不通的逻辑(如 "怎么用字典统计单词出现次数"),都是最好的学习素材:

  • 遇到错误时,先复制报错信息搜 Stack Overflow 或 CSDN,看懂 "为什么错"(比如KeyError是因为访问了字典中不存在的键),而不只是 "怎么改"。
  • 解决后,用笔记软件(如 Notion)按 "场景" 分类记录:
    • 比如 "文件处理" 分类下,记录 "批量重命名图片的 3 种方法(os.rename/pathlib/glob)"。
    • "数据结构" 分类下,记录 "列表去重的效率对比(set最快,但会打乱顺序;list(dict.fromkeys())能保留顺序)"。

效果:这些笔记会逐渐变成你的 "个性化手册",比通用教程更贴合你的实际需求。

3. 用 "模仿 - 修改 - 创造" 三步法,降低实践门槛

刚开始独立写代码可能会觉得 "无从下手",可以从 "抄代码" 开始,但要按这三步进阶:

  1. 模仿 :找一个简单的现成代码(如 GitHub 上的 "100 行 Python 小项目"),逐行看懂逻辑,然后自己敲一遍(不要复制粘贴)。
    比如模仿一个 "天气查询脚本",理解它是怎么调用天气 API、怎么解析 JSON 数据的。
  2. 修改 :在原代码基础上改一点东西,比如给天气脚本加一个 "保存查询记录到 txt" 的功能,或改成 "查询后自动发送到微信"(需要查itchat库)。
    这一步的目的是 "打破对原代码的依赖",强迫自己思考 "哪部分可以动,怎么动"。
  3. 创造:基于修改的经验,自己设计一个类似但不同的功能,比如从 "查天气" 变成 "查股票价格",核心逻辑相通(调用 API→解析数据→展示),但细节需要独立解决。

4. 接受 "不完美",先 "跑起来" 再 "优化"

新手常陷入的误区是:写代码前总想 "设计最完美的结构",结果迟迟不敢动手。其实对初学者来说,"能跑通" 比 "写得优雅" 更重要。

比如你想做一个 "待办事项管理器",第一版完全可以用 txt 文件存数据(一行一个待办),用最基础的open/read/write操作实现增删改查。跑通后,再思考优化:

  • 数据存 txt 不方便查询?换成sqlite3数据库。
  • 每次手动输入命令太麻烦?加一个tkinter界面。
  • 想在手机上用?改成Flask网页版。

循序渐进:每一次优化都是对新知识的自然应用,比一开始就追求 "全栈架构" 更扎实。

总结

你的 "跳过冗余视频,先抓框架再实践" 的思路完全可行,关键是:

  • 用具体目标驱动学习(做什么→需要什么→学什么)。
  • 不怕犯错,把错误当成 "定向补漏" 的线索。
  • 先实现 "能用",再追求 "好用""优雅"。

按这个节奏推进,你会发现:Python 的语法、库、框架,都会在解决一个个实际问题的过程中,自然内化成你的能力 ------ 这比被动看网课效率高得多。

3 建议的学习项目

以下是一个1 个月(4 周)的 Python 项目实操计划,按照 "基础巩固→逻辑强化→综合应用" 的顺序设计,每个项目都有明确的目标、涉及的知识点和拓展方向。建议每周完成 1-2 个项目,遇到卡壳时优先查官方文档和 Stack Overflow。

第 1 周:基础巩固(文件操作、数据处理)

项目 1:文件分类器
  • 目标:写一个脚本,将指定文件夹中的文件按类型(图片、文档、视频等)自动分类到不同子文件夹。

  • 知识点os/pathlib库(遍历文件、创建文件夹),字典(统计文件类型)。

  • 示例代码

    python

    运行

    复制代码
    import os
    import shutil
    from pathlib import Path
    
    def organize_files(source_dir):
        file_types = {
            'images': ['.jpg', '.png', '.jpeg', '.gif'],
            'documents': ['.pdf', '.docx', '.txt', '.xlsx'],
            'videos': ['.mp4', '.mov', '.avi'],
            'audio': ['.mp3', '.wav', '.flac']
        }
        
        for filename in os.listdir(source_dir):
            file_ext = Path(filename).suffix.lower()
            for category, extensions in file_types.items():
                if file_ext in extensions:
                    category_dir = os.path.join(source_dir, category)
                    os.makedirs(category_dir, exist_ok=True)
                    shutil.move(
                        os.path.join(source_dir, filename),
                        os.path.join(category_dir, filename)
                    )
                    break
    
    if __name__ == "__main__":
        organize_files("/path/to/your/folder")  # 替换为实际路径
  • 拓展 :加一个参数,支持按 "创建时间"(如 2023 年、2024 年)分类;或用tkinter做个带界面的文件选择器。

项目 2:简单数据分析(学生成绩统计)
  • 目标 :用pandas读取 CSV 格式的学生成绩表,计算平均分、最高分,按分数段统计人数。

  • 知识点pandas基本操作(读取 CSV、筛选数据、计算统计量),matplotlib绘图。

  • 数据准备 :创建一个scores.csv文件,内容如下:

    csv

    复制代码
    name,math,english,chinese
    Alice,85,92,78
    Bob,90,87,95
    Charlie,65,70,60
    David,78,82,88
  • 示例代码

    python

    运行

    复制代码
    import pandas as pd
    import matplotlib.pyplot as plt
    
    # 读取数据
    df = pd.read_csv('scores.csv')
    
    # 计算总分和平均分
    df['total'] = df['math'] + df['english'] + df['chinese']
    df['average'] = df['total'] / 3
    
    # 统计各科目平均分
    subject_avg = df[['math', 'english', 'chinese']].mean()
    
    # 按平均分划分等级
    def get_grade(avg):
        if avg >= 90: return 'A'
        elif avg >= 80: return 'B'
        elif avg >= 70: return 'C'
        else: return 'D'
    
    df['grade'] = df['average'].apply(get_grade)
    
    # 统计各等级人数
    grade_counts = df['grade'].value_counts()
    
    # 可视化
    grade_counts.plot(kind='bar', title='Grade Distribution')
    plt.xlabel('Grade')
    plt.ylabel('Number of Students')
    plt.show()
    
    print(df)
    print("\nSubject Averages:")
    print(subject_avg)
  • 拓展:从网上下载真实数据集(如 Kaggle 的泰坦尼克号数据),分析生存率与票价、舱位的关系。

第 2 周:逻辑强化(算法应用、API 调用)

项目 3:爬虫小工具(天气查询)
  • 目标:调用心知天气 API,输入城市名返回当前天气状况和温度。

  • 知识点requests库(发送 HTTP 请求),JSON 解析,异常处理。

  • 准备工作

    1. 注册心知天气 API 账号,获取免费 API Key。
    2. API 文档:https://www.seniverse.com/doc#current
  • 示例代码

    python

    运行

    复制代码
    import requests
    import json
    
    def get_weather(city):
        API_KEY = "your_api_key"  # 替换为你的API Key
        URL = f"https://api.seniverse.com/v3/weather/now.json?key={API_KEY}&location={city}&language=zh-Hans&unit=c"
        
        try:
            response = requests.get(URL)
            data = response.json()
            
            # 检查API返回是否成功
            if 'results' in data:
                weather = data['results'][0]['now']
                location = data['results'][0]['location']['name']
                print(f"{location} 当前天气: {weather['text']}, 温度: {weather['temperature']}°C")
            else:
                print(f"查询失败: {data.get('status_message', '未知错误')}")
        except Exception as e:
            print(f"发生错误: {e}")
    
    if __name__ == "__main__":
        city = input("请输入城市名: ")
        get_weather(city)
  • 拓展 :用schedule库定时查询天气,结果保存到 CSV 文件;或结合smtplib每天自动发邮件提醒。

项目 4:算法应用(简易密码生成器)
  • 目标:生成指定长度、包含大小写字母、数字和特殊符号的随机密码。

  • 知识点 :随机数生成(random库),字符串操作,条件判断。

  • 示例代码

    python

    运行

    复制代码
    import random
    import string
    
    def generate_password(length=12, use_upper=True, use_digits=True, use_special=True):
        # 定义字符集
        letters = string.ascii_lowercase
        if use_upper:
            letters += string.ascii_uppercase
        if use_digits:
            letters += string.digits
        if use_special:
            letters += string.punctuation
        
        if not letters:
            raise ValueError("至少选择一种字符类型")
        
        # 确保密码包含至少一个每种指定类型的字符
        password = []
        if use_upper:
            password.append(random.choice(string.ascii_uppercase))
        if use_digits:
            password.append(random.choice(string.digits))
        if use_special:
            password.append(random.choice(string.punctuation))
        
        # 补足剩余长度
        remaining_length = max(0, length - len(password))
        password.extend(random.sample(letters, remaining_length))
        
        # 打乱顺序
        random.shuffle(password)
        return ''.join(password)
    
    if __name__ == "__main__":
        password = generate_password(
            length=16, 
            use_upper=True, 
            use_digits=True, 
            use_special=True
        )
        print(f"生成的密码: {password}")
  • 拓展:加一个 "密码强度检测" 功能,根据长度、字符类型计算强度分数(如用正则表达式检查)。

第 3 周:综合应用(Web 开发、数据库)

项目 5:简易博客系统(命令行版)
  • 目标:实现一个支持创建文章、查看列表、搜索文章的博客系统,数据用 JSON 文件存储。

  • 知识点 :类的设计(Article类、Blog类),文件读写,字典操作。

  • 示例代码

    python

    运行

    复制代码
    import json
    import os
    from datetime import datetime
    
    class Article:
        def __init__(self, title, content, author, tags=None):
            self.title = title
            self.content = content
            self.author = author
            self.tags = tags or []
            self.created_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            self.id = hash(f"{self.title}{self.created_at}") % 1000000
    
        def to_dict(self):
            return {
                "id": self.id,
                "title": self.title,
                "content": self.content,
                "author": self.author,
                "tags": self.tags,
                "created_at": self.created_at
            }
    
    class Blog:
        def __init__(self, data_file="blog_data.json"):
            self.data_file = data_file
            self.articles = self._load_data()
    
        def _load_data(self):
            if os.path.exists(self.data_file):
                with open(self.data_file, "r", encoding="utf-8") as f:
                    return [Article(**data) for data in json.load(f)]
            return []
    
        def _save_data(self):
            with open(self.data_file, "w", encoding="utf-8") as f:
                json.dump([article.to_dict() for article in self.articles], f, ensure_ascii=False, indent=2)
    
        def create_article(self, title, content, author, tags=None):
            article = Article(title, content, author, tags)
            self.articles.append(article)
            self._save_data()
            return article
    
        def list_articles(self):
            return sorted(self.articles, key=lambda a: a.created_at, reverse=True)
    
        def search_by_title(self, keyword):
            return [a for a in self.articles if keyword.lower() in a.title.lower()]
    
        def search_by_tag(self, tag):
            return [a for a in self.articles if tag in a.tags]
    
    # 简单的命令行交互
    def main():
        blog = Blog()
        while True:
            print("\n=== 博客系统 ===")
            print("1. 创建文章")
            print("2. 查看文章列表")
            print("3. 按标题搜索")
            print("4. 按标签搜索")
            print("5. 退出")
            choice = input("请选择操作: ")
    
            if choice == "1":
                title = input("标题: ")
                content = input("内容: ")
                author = input("作者: ")
                tags = input("标签(用逗号分隔, 可选): ").split(",") if input else []
                article = blog.create_article(title, content, author, tags)
                print(f"文章创建成功! ID: {article.id}")
    
            elif choice == "2":
                articles = blog.list_articles()
                if not articles:
                    print("暂无文章")
                else:
                    for a in articles:
                        print(f"{a.id} | {a.title} | {a.author} | {a.created_at}")
    
            elif choice == "3":
                keyword = input("搜索关键词: ")
                articles = blog.search_by_title(keyword)
                if not articles:
                    print("未找到匹配文章")
                else:
                    for a in articles:
                        print(f"{a.id} | {a.title} | {a.author} | {a.created_at}")
    
            elif choice == "4":
                tag = input("标签: ")
                articles = blog.search_by_tag(tag)
                if not articles:
                    print("未找到匹配文章")
                else:
                    for a in articles:
                        print(f"{a.id} | {a.title} | {a.author} | {a.created_at}")
    
            elif choice == "5":
                break
    
            else:
                print("无效选择,请重新输入")
    
    if __name__ == "__main__":
        main()
  • 拓展 :改用sqlite3数据库存储数据;或用Flask把博客做成 Web 应用,支持网页访问。

项目 6:数据可视化(股票趋势图)
  • 目标 :调用 Yahoo Finance API 获取股票数据,用matplotlib绘制 K 线图和均线。

  • 知识点 :API 调用,pandas数据处理,mplfinance绘图。

  • 准备工作 :安装依赖库:pip install yfinance mplfinance

  • 示例代码

    python

    运行

    复制代码
    import yfinance as yf
    import mplfinance as mpf
    import pandas as pd
    
    def plot_stock_trend(stock_code, start_date, end_date, mav=(5, 10, 20)):
        # 获取股票数据
        stock = yf.Ticker(stock_code)
        df = stock.history(start=start_date, end=end_date)
        
        if df.empty:
            print(f"未获取到 {stock_code} 的数据")
            return
        
        # 重命名列名以符合mplfinance要求
        df = df.rename(columns={
            'Open': 'Open',
            'High': 'High',
            'Low': 'Low',
            'Close': 'Close',
            'Volume': 'Volume'
        })
        
        # 绘制K线图和均线
        mpf.plot(
            df, 
            type='candle', 
            mav=mav,  # 绘制5、10、20日均线
            volume=True,
            title=f"{stock_code} 股票趋势图",
            ylabel='价格',
            ylabel_lower='成交量',
            figratio=(12, 6),
            style='yahoo'
        )
    
    if __name__ == "__main__":
        # 示例:绘制阿里巴巴(BABA)从2023年1月1日到2023年12月31日的趋势图
        plot_stock_trend("BABA", "2023-01-01", "2023-12-31")
  • 拓展 :计算涨跌幅、波动率等指标;或用plotly做交互式图表,支持鼠标悬停查看具体数值。

第 4 周:自主项目(整合所学,自由发挥)

项目 7:自选主题(建议从以下方向选择)
  1. 自动化工具

    • 批量图片处理(如压缩、添加水印)
    • 定时备份文件到云盘(结合百度云 / 阿里云 API)
    • 自动生成周报(从 Excel 提取数据,生成 Word 文档)
  2. 小游戏

    • 猜数字(随机生成 1-100 的数字,用户猜,提示大了或小了)
    • 2048 游戏(用控制台实现滑动合并数字)
    • 贪吃蛇(用tkinterpygame库)
  3. 数据分析应用

    • 分析自己的微信聊天记录(词云、聊天频率统计)
    • 爬取豆瓣电影 Top250,分析评分、类型分布
    • 用机器学习预测房价(用scikit-learn简单线性回归)
项目开发建议
  1. 先规划:用思维导图或流程图设计功能模块(如 "文件处理""用户交互""数据存储")。
  2. 分阶段实现:先完成核心功能(如 "能跑通的最小版本"),再逐步添加细节。
  3. 写文档 :给代码加注释,写简单的README说明使用方法和依赖。
  4. 上传 GitHub:练习版本控制,提交代码到自己的仓库,积累项目经验。

关键学习资源

按这个计划实践,1 个月后你将能独立完成中小型项目,对 Python 的核心语法、常用库和开发流程有更深入的理解。遇到困难时,记得回到 "用问题驱动学习" 的思路,逐个击破知识点!

相关推荐
七月初七淮水竹亭~10 分钟前
Pycharm 报错 Environment location directory is not empty 如何解决
ide·python·pycharm
倔强青铜三11 分钟前
苦练Python第2天:安装 Python 与设置环境
前端·后端·python
ningmengjing_13 分钟前
在 PyCharm 中安装并配置 Node.js 的指南
开发语言·javascript·ecmascript
布语world16 分钟前
2025快手创作者中心发布视频python实现
爬虫·python
晓131328 分钟前
JavaScript基础篇——第五章 对象(最终篇)
开发语言·前端·javascript
倔强青铜三29 分钟前
苦练Python第1天:为何要在2025年学习Python
前端·后端·python
LjQ20401 小时前
Java的一课一得
java·开发语言·后端·web
蓝婷儿1 小时前
Python 机器学习核心入门与实战进阶 Day 7 - 复盘 + 综合实战挑战
python·机器学习
阿蒙Amon1 小时前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#
CHANG_THE_WORLD2 小时前
「macOS 系统字体收集器 (C++17 实现)」
开发语言·c++·macos