Python新手,从哪个项目开始学习Python比较好?

写 python 代码也有几年了,但都只局限于使用上面,并没有深入研究 python,现在想试着研究 python 及相关模块的源代码,但不知道从何处下手,感觉都好难,求大神指点


Python新手,从哪个项目开始学习Python比较好?
27 回复

看 Python 自己的那些 Python 就 OK


从写一个简单的命令行待办事项管理器开始。这项目能覆盖Python基础的核心:变量、循环、条件判断、函数、文件读写和列表操作。你不需要任何外部库,用纯Python就能搞定。

下面是一个可以直接运行的示例,它实现了添加、查看、删除和保存任务的基本功能:

import json
import os

TODO_FILE = 'todo_list.json'

def load_tasks():
    """从文件加载任务列表"""
    if os.path.exists(TODO_FILE):
        with open(TODO_FILE, 'r') as f:
            return json.load(f)
    return []

def save_tasks(tasks):
    """保存任务列表到文件"""
    with open(TODO_FILE, 'w') as f:
        json.dump(tasks, f)

def show_tasks(tasks):
    """显示所有任务"""
    if not tasks:
        print("当前没有任务。")
        return
    
    print("\n当前任务列表:")
    for i, task in enumerate(tasks, 1):
        status = "✓" if task['done'] else " "
        print(f"{i}. [{status}] {task['title']}")

def add_task(tasks):
    """添加新任务"""
    title = input("请输入任务内容:").strip()
    if title:
        tasks.append({'title': title, 'done': False})
        save_tasks(tasks)
        print(f"已添加任务:{title}")
    else:
        print("任务内容不能为空!")

def complete_task(tasks):
    """标记任务为完成"""
    show_tasks(tasks)
    if tasks:
        try:
            index = int(input("请输入要完成的任务编号:")) - 1
            if 0 <= index < len(tasks):
                tasks[index]['done'] = True
                save_tasks(tasks)
                print(f"已标记任务为完成:{tasks[index]['title']}")
            else:
                print("无效的任务编号!")
        except ValueError:
            print("请输入有效的数字!")

def delete_task(tasks):
    """删除任务"""
    show_tasks(tasks)
    if tasks:
        try:
            index = int(input("请输入要删除的任务编号:")) - 1
            if 0 <= index < len(tasks):
                removed = tasks.pop(index)
                save_tasks(tasks)
                print(f"已删除任务:{removed['title']}")
            else:
                print("无效的任务编号!")
        except ValueError:
            print("请输入有效的数字!")

def main():
    """主程序循环"""
    tasks = load_tasks()
    
    while True:
        print("\n=== 命令行待办事项管理器 ===")
        print("1. 查看任务")
        print("2. 添加任务")
        print("3. 标记任务完成")
        print("4. 删除任务")
        print("5. 退出")
        
        choice = input("请选择操作 (1-5): ").strip()
        
        if choice == '1':
            show_tasks(tasks)
        elif choice == '2':
            add_task(tasks)
        elif choice == '3':
            complete_task(tasks)
        elif choice == '4':
            delete_task(tasks)
        elif choice == '5':
            print("再见!")
            break
        else:
            print("无效的选择,请重新输入!")

if __name__ == "__main__":
    main()

这个项目的好处是:你能立刻看到结果,每完成一个功能都有正反馈。写完基础版本后,可以尝试添加新功能,比如按日期排序、任务分类或设置优先级,这样能自然地学习更多Python特性。

一句话建议:从能快速获得成就感的小工具开始,保持学习动力。

是要看 CPython 的源码吗?

这种问题在知乎上都一大片了,搜索一下就有了

你是想要深入研究 Python 写代码的 Best Practice,还是 Python 解释器?

星星多的项目 过一遍

我在看 CPython

使用的 python 相关都比较难,想找个简单点的入手

先找个简单的 python 开源模块研究下

好的,我去搜搜看

厉害,分享下心得呢

星星多的代码看着好吃力

python 的源码么?

准备写个系列,刚写了两篇 = =

你看源码是从哪部分开始呢

flask,gunicore,tornado,httpie,requests 读过这几个,写的都非常好

666,我就看了下 tornado,看不进去,所以想找个简单,你能分享下如何来看这些项目的源代码么

《 python cookboook 》《 Python 源码分析》,再挑几个标准库看看

一般都是从对象模型开始看吧,其他的大都会涉及到这一部分。

多谢分享

这是你写的?

没错,对象模型,然后 解释器 内存分配, 你可以看看 Python 源码剖析,挺不错的。

好的,多谢

自己写个 web server 试试

贴下自己看 gunicore 的源码的阅读文章 https://github.com/Junnplus/blog/issues/9
也有几篇开始看 cpython 源码的文章

回到顶部