写给想快速上手写代码的人

很多人学Python,最大的问题不是“学不会”,而是“不知道该学哪些”。

今天学列表,明天学字典,后天学元组,大后天学集合。学了一个月,打开项目还是不知道从哪里下手。

这篇文章换个思路:按使用频率排序。告诉你一个工程师每天真正在写什么,哪些语法占了你80%的工作,哪些半年才用一次。

先说结论:真正天天写的,只有这七样

如果你打开一个Python工程师的项目,统计所有代码行,你会发现:

变量                     ★★★★★
列表(list)             ★★★★★
字典(dict)             ★★★★★
字符串(str)            ★★★★★
函数(function)         ★★★★★
条件判断(if)           ★★★★★
循环(for)              ★★★★★

这七样东西,占了日常工作80%以上的代码量。

剩下的:元组、集合、类、正则、装饰器、生成器——不是说没用,而是不需要一开始就学。用到的时候查一下,完全来得及。

TOP 0:变量 variable

使用频率:★★★★★

为什么重要:​ 变量不是一种数据结构,而是所有Python代码的入口。没有变量,就没有数据存储和传递。

name = "Eric"
users = []
response = {}
is_active = True

命名建议:

user_name = "Eric"       # 推荐:蛇形命名,见名知意
MAX_COUNT = 100          # 常量习惯大写

不要这样写:

a = 1
b = 2
c = 3

真实项目里,变量名必须能表达含义。三个月后回头看代码,a、b、c谁也看不懂。

不需要现在学的:​ 变量作用域、global、nonlocal。

TOP 1:列表 list

使用频率:★★★★★

为什么重要:​ 接口返回的数据是列表,数据库查询结果是列表,Excel读取内容是列表。遍历、排序、过滤、分页——几乎所有批量数据的操作都离不开列表。

最常用的几个方法:

users = ["Eric", "Tom", "Jack"]

users.append("Lucy")        # 追加
users.pop()                 # 删除最后一个
users.sort()                # 排序
len(users)                  # 长度
users[0]                    # 索引访问
users[-1]                   # 倒数第一个

工作里最常见的切片操作:

users[:10]                  # 前10个(分页常用)
users[10:]                  # 第10个以后
users[::-1]                 # 反转

遍历:

for user in users:
    print(user)

for index, user in enumerate(users):
    print(index, user)

enumerate比 for i in range(len(users))更Pythonic,面试也常考。

真实踩坑案例:

def add_user(users=[]):
    users.append("Eric")
    return users

第一次调用:['Eric']

第二次调用:['Eric', 'Eric']

第三次调用:['Eric', 'Eric', 'Eric']

原因:函数的默认参数在定义时创建一次,后续调用复用同一个列表对象。这是新人100%会踩的坑。

正确写法:

def add_user(users=None):
    if users is None:
        users = []
    users.append("Eric")
    return users

不需要现在学的:​ 列表推导式嵌套、多维列表、__getitem__魔术方法。

TOP 2:字典 dict

使用频率:★★★★★

为什么重要:​ 接口返回的JSON是字典,配置文件是字典,数据库记录转成字典。几乎所有结构化数据都用字典承载。不会字典,几乎不能写自动化测试。

最常用的几个方法:

user = {"name": "Eric", "age": 39}

user["name"]                # 取值(key不存在会报错)
user.get("email")           # 取值(key不存在返回None)
user["age"] = 40            # 修改
user["email"] = "e@e.com"   # 新增
user.pop("age")             # 删除

遍历:

for key, value in user.items():
    print(key, value)

真实工作场景:

接口返回的JSON长这样:

response = {
    "code": 200,
    "message": "success",
    "data": {
        "id": 1,
        "name": "Eric",
        "skills": ["Python", "Git"]
    }
}

你每天做的事就是:

code = response.get("code")
name = response.get("data", {}).get("name")
skills = response.get("data", {}).get("skills", [])

不需要现在学的:​ OrderedDict、defaultdict、ChainMap。

TOP 3:字符串 str

使用频率:★★★★★

为什么重要:​ 日志、接口URL、SQL语句、文件路径、正则匹配——字符串无处不在。

最常用的几个操作:

s = "hello python"

s.find("python")            # 查找,找不到返回-1
s.replace("python", "go")   # 替换
s.split(",")                # 分割
"-".join(["a", "b"])        # 合并
s.strip()                   # 去空格

格式化(必会用 f-string):

name = "Eric"
age = 39
print(f"My name is {name}, age is {age}")

真实踩坑案例:

新人写接口断言:

assert response.get("message") == "success"

结果一直失败。打印出来看:

"success\n"

接口返回的字符串末尾带了换行符。加上 .strip()就好了。

不需要现在学的:​ str.translate()、string.Template、复杂的format格式化。

TOP 4:函数 function

使用频率:★★★★★

为什么重要:​ 不会封装函数,代码很快就会变成1000行的面条代码。函数是组织代码的最小单元。

最常用的写法:

def add(a, b):
    return a + b

默认参数:

def say_hello(name="Eric"):
    print(f"Hello {name}")

真实工作场景:

def send_request(url, method="GET", timeout=10):
    """发送HTTP请求,返回响应数据"""
    # 具体实现
    pass

不需要现在学的:​ 装饰器、闭包、生成器函数、functools.partial。

TOP 5:条件判断 if

使用频率:★★★★★

为什么重要:​ 所有逻辑分支都靠它。

最常用的写法:

if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

常见判断:

if name:                    # 非空判断
if user is None:            # None判断(推荐用 is,不用 ==)
if "Python" in skills:      # 包含判断
if a == b:                  # 相等判断

关于布尔值和假值:

Python中以下值都会被当作 False:

0
None
[]
{}
""
False

所以 if name:等价于 if name != "" and name is not None,写起来更简洁。

关于 None 的判断:

很多新人习惯写 if a == None,但 PEP8 推荐使用 is:

if result is None:      # 推荐
if result is not None:  # 推荐

不需要现在学的:​ 三元表达式嵌套、match case(Python 3.10+)。

TOP 6:循环 for

使用频率:★★★★★

为什么重要:​ 遍历列表、遍历字典、遍历文件行、遍历接口分页——没有循环几乎什么都做不了。

最常用的写法:

for user in users:
    print(user)

带索引:

for index, user in enumerate(users):
    print(index, user)

同时遍历多个列表(zip):

names = ["Eric", "Tom"]
scores = [95, 58]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

这在处理Excel、CSV、接口数据时非常实用。

为什么没有 while?

Python工程代码中,绝大多数循环都是 for。while更多用于等待、重试、轮询等特殊场景。对于新人来说,先熟练掌握 for即可,while用到再查。

不需要现在学的:​ itertools模块、无限循环。

第二梯队:工作中经常遇到,但不需要精通

异常处理 try ★★★★

try:
    result = send_request(url)
except Exception as e:
    print(f"请求失败: {e}")

接口请求、文件读写、数据库操作——这三样必须有异常处理。

文件操作 with open ★★★★

with open("data.txt", "r", encoding="utf-8") as f:
    content = f.read()

记住三要素:with、encoding="utf-8"、r/w/a。

模块导入 import ★★★★

import os
from utils import send_request

把代码拆到不同文件里,就需要模块导入。

第三梯队:用到再查,不需要提前学

语法

使用频率

说明

元组 tuple

★★★

函数返回多个值时见过即可

集合 set

★★★

去重和交集并集时用

正则 regex

★★★

复制粘贴为主,能看懂即可

lambda

★★

能看懂就行,不要为了炫技而用

装饰器

★★

框架里常见,自己写的机会不多

生成器

★★

处理超大文件时有用

多线程

★

入门阶段可以完全不碰

类 class ★★★★

能看懂很重要,先会写简单类,复杂继承后期再学。

import requests
response = requests.get(url)    # requests 是模块,get 是它提供的函数

你天天都在使用别人封装好的模块、函数和对象,但不一定需要一开始就自己写复杂的类。

真正需要大量写 class 的场景,一般是大型项目或框架开发。入门阶段,函数优先,先把代码组织能力练起来,以后再补类完全来得及。

学习路线图:按周安排

第一周:先把这七样写熟

变量 → 字符串 → 列表 → 字典 → if → for → 函数

目标是:能用这七样写一个简单的脚本。

第二周:补上项目必备

异常处理 → 文件操作 → 模块导入 → 虚拟环境 → requirements.txt

目标是:能把代码组织成项目,并在另一台电脑上跑起来。

第三周:理解别人的代码

类 → 元组 → 集合 → 正则 → lambda

目标是:能看懂项目里已有的代码,知道它们在干什么。

第四周以后:遇到什么学什么

装饰器 → 生成器 → 多线程 → 异步

目标是:遇到具体问题时,知道去查什么。

工程师每天真正写Python长什么样?

说了这么多,不如看一个真实的例子。

假设你要写一个脚本,读取用户列表,判断每个人是否及格:

users = [
    {"name": "Eric", "score": 95},
    {"name": "Tom", "score": 58},
]

def check(user):
    if user["score"] >= 60:
        return "Pass"
    return "Fail"

for user in users:
    result = check(user)
    print(f"{user['name']} -> {result}")

认真看看,这里出现了什么?

✓ 变量

✓ 列表

✓ 字典

✓ 字符串

✓ 函数

✓ if

✓ for

没有出现:

✗ 自己定义类

✗ 装饰器

✗ 生成器

✗ 元类

✗ 多线程

真正的工作里,大量Python代码就是这样。

工作使用率排行榜(全文总结)

排名

内容

使用率

建议

1

变量

★★★★★

必须掌握

2

list

★★★★★

必须掌握

3

dict

★★★★★

必须掌握

4

string

★★★★★

必须掌握

5

function

★★★★★

必须掌握

6

if

★★★★★

必须掌握

7

for

★★★★★

必须掌握

8

try/except

★★★★☆

工作必备

9

文件操作

★★★★☆

工作常见

10

import

★★★★☆

工作常见

11

class

★★★★☆

能看懂很重要,先会写简单类

12

regex

★★★☆☆

用到再查

13

decorator

★★☆☆☆

框架开发再学

14

generator

★★☆☆☆

后期补充

15

async

★☆☆☆☆

有需求再学

最后说几句

不是Python只有这些。

而是:对于刚开始工作的工程师,先学会最重要的20%。剩下80%,等真正需要的时候,再一点一点补。

Python基础不是背语法,而是知道什么场景用什么工具。

数据是列表还是字典?这段逻辑要不要封装成函数?这个操作会不会报错?需不需要异常处理?

这些判断能力,比记住十个冷门方法重要一百倍。

Python基础不是看懂,而是写熟。

能把变量、字符串、列表、字典、函数、if、for 这七样写熟,你就已经超过很多收藏了几百个教程却没写过一行代码的人了。

更多推荐