新手学Python最大的障碍不是逻辑,是单词。这篇笔记把高频词汇按场景分类,配合代码示例,看完就能上手。
很多读者跟我反映,学Python最头疼的不是语法本身,而是那些英文单词根本不认识。
"老师讲'append',我以为是'附加'的意思,结果它是'追加'……""明明看懂了代码逻辑,但一看到'def'就懵了。"
说实话,这是所有非英语母语学习者的共同痛点。Python作为一门英文编程语言,它的关键字、内置函数、常用方法都是英文单词。不认识这些词,就像拿着中文说明书去修进口车——看是能看,但总隔着一层。
这篇笔记,我把Python入门阶段最常用的100多个核心词汇,按照学习路径分成了十大类。每个词都配上中文解释 + 代码示例 + 实用场景,帮你一边记单词一边敲代码。
学Python写的第一个程序就是输出。这几个词你每天都要用:
| | |
|---|
print | | |
coding | | |
syntax | | |
error | | |
invalid | | |
identifier | | |
# print:把内容输出到屏幕print("Hello Python") # 输出:Hello Python# coding:指定文件编码(Python文件头部)# -*- coding: utf-8 -*-# syntax error:语法错误——你最常见到的报错# 如果写成 print("Hello" 忘记括号,就会报 SyntaxError
实战场景: 每次代码运行报错,看到SyntaxError: invalid syntax,就是告诉你"你写的东西不符合Python语法规则"。这时候回头检查括号、冒号、引号。
字符串就是文字内容,下面这些词全是跟文字处理相关的:
| | |
|---|
user | | |
name | | |
attribute | | |
value | | |
key | | |
year/month/day | | |
# user 和 name 是最常用的变量名user_name = "张三"print(user_name) # 输出:张三# attribute:对象的属性text = "hello"print(text.upper()) # upper() 就是字符串的一个属性(方法)# key 和 value:键值对user_info = {"name": "张三", "age": 25}# key是"name",value是"张三"
实战场景: 写任何程序都要起变量名。user_name比a好一万倍——前者一看就知道存的是用户名,后者过两天你自己都忘了。
| | |
|---|
upper | | |
lower | | |
capitalize | | |
title | | |
replace | | |
old/new | | |
count | | |
swap | | |
text = "hello python"# upper:全部大写print(text.upper()) # HELLO PYTHON# lower:全部小写(已有数据规范化常用)print(text.lower()) # hello python# capitalize:首字母大写print(text.capitalize()) # Hello python# title:每个单词首字母大写print(text.title()) # Hello Python# replace:替换print(text.replace("python", "world")) # hello world# count:计数print(text.count("l")) # 2(有两个字母l)
实战场景: 用户登录时,不管用户输入的是"Admin"还是"admin",都用.lower()统一转成小写再比对,避免大小写错误。
| | |
|---|
strip | | |
index | | |
find | | |
count | | |
start/end | | |
chars | | |
sub | | |
text = " Hello Python "# strip:去除首尾空格(处理用户输入超级有用)print(text.strip()) # "Hello Python"# find:查找位置print(text.find("Python")) # 8(找到返回起始位置)print(text.find("Java")) # -1(找不到返回-1)# count:计数print(text.count("o")) # 2# startswith / endswith:判断开头结尾print(text.strip().startswith("Hello")) # True
实战场景: 用户提交表单时,名字前后经常有多余空格。username = input("输入姓名:").strip() 能一键去除,避免"张三"和"张三 "被当成两个人。
| | |
|---|
input | | |
prompt | | |
ID | | |
format | | |
args | | |
kwargs | | |
# input:获取用户输入name = input("请输入你的姓名:") # prompt就是"请输入你的姓名:"print(f"你好,{name}") # f-string格式化(Python 3.6+)# format:另一种格式化方式age = 25print("我今年{}岁".format(age)) # 我今年25岁# args 和 kwargs:写在函数里的参数defmy_func(*args, **kwargs): print(args) # 收到位置参数,是一个元组 print(kwargs) # 收到关键字参数,是一个字典
实战场景: 写一个用户注册程序,用input()获取用户名、密码,用format()或f-string拼出欢迎语。
| | |
|---|
tuple | | |
max/min | | |
iterable | | |
function | | |
stop | | |
object | | |
# tuple:用小括号,不能修改colors = ("red", "green", "blue")print(colors[0]) # red# colors[0] = "yellow" # 这会报错,tuple不能修改# max / min:最大最小值numbers = (3, 7, 1, 9, 2)print(max(numbers)) # 9print(min(numbers)) # 1# iterable:可迭代对象(列表、元组、字符串都可以for循环)foritemin colors: print(item) # 依次输出 red green blue# object:一切皆对象print(type(123)) # <class 'int'>print(type("abc")) # <class 'str'>
实战场景: 存储一周七天这种"不该变"的数据,用元组比列表更安全——防止有人意外修改。
| | |
|---|
list | | |
reverse | | |
true/false | | |
append | | |
extend | | |
insert | | |
index | | |
find | | |
count | | |
pop | | |
remove | | |
del | | |
clear | | |
sort | | |
fruits = ["apple", "banana", "orange"]# append:追加(最常用)fruits.append("grape")print(fruits) # ['apple', 'banana', 'orange', 'grape']# extend:扩展(把另一个列表加进来)more = ["mango", "peach"]fruits.extend(more)print(fruits) # ['apple', 'banana', 'orange', 'grape', 'mango', 'peach']# insert:插入指定位置fruits.insert(0, "kiwi") # 在第一个位置插入print(fruits) # ['kiwi', 'apple', 'banana', ...]# pop:取出最后一个last = fruits.pop()print(last) # peachprint(fruits) # 少了最后一个# remove:移除指定元素fruits.remove("banana")print(fruits) # banana没了# sort:排序numbers = [3, 1, 4, 1, 5, 9]numbers.sort()print(numbers) # [1, 1, 3, 4, 5, 9]# reverse:反转fruits.reverse()print(fruits) # 顺序反过来了
实战场景: 写一个待办事项应用——用append添加新任务,用pop完成最后一个任务,用remove删除指定任务。列表几乎承包了80%的数据存储需求。
| | |
|---|
set | | |
add | | |
update | | |
discard | | |
intersection | | |
union | | |
difference | | |
symmetric | | |
in | | |
not | | |
subset | | |
superset | | |
copy | | |
# set:自动去重nums = [1, 2, 2, 3, 3, 3, 4]unique=set(nums)print(unique) # {1, 2, 3, 4}# add:添加元素unique.add(5)print(unique) # {1, 2, 3, 4, 5}# intersection:交集a = {1, 2, 3, 4}b = {3, 4, 5, 6}print(a & b) # {3, 4}(等价于 a.intersection(b))# union:并集print(a | b) # {1, 2, 3, 4, 5, 6}# difference:差集print(a - b) # {1, 2}(在a不在b)# in / not in:判断是否属于print(3 in a) # Trueprint(7 in a) # False
实战场景: 两个Excel表格都有用户ID,想找出"在A表但不在B表"的人——用集合的difference,一行代码搞定,不用写循环。
| | |
|---|
dict | | |
key | | |
value | | |
item | | |
mapping | | |
seq | | |
from | | |
get | | |
default | | |
none | | |
arg | | |
kwargs | | |
# dict:键值对存储student = { "name":"张三", "age":20, "major":"计算机"}# key 和 value:访问print(student["name"]) # 张三print(student.get("age")) # 20(用get更安全)# get:找不到不报错,返回Noneprint(student.get("grade")) # None# item:遍历所有键值对forkey, value in student.items(): print(f"{key}:{value}")# 输出:# name:张三# age:20# major:计算机# keys 和 values:单独获取print(student.keys()) # dict_keys(['name', 'age', 'major'])print(student.values()) # dict_values(['张三', 20, '计算机'])# 添加新键值对student["grade"] = "A"print(student) # {'name': '张三', 'age': 20, 'major': '计算机', 'grade': 'A'}
实战场景: 存储用户信息、配置参数、API返回的数据——字典是最合适的数据结构。user.get("email")比user["email"]更安全,因为后者在键不存在时直接报错崩溃。
| | |
|---|
for...in | | |
while | | |
range | | |
sep | | |
flush | | |
step | | |
continue | | |
break | | |
# for...in:遍历列表fruits = ["apple", "banana", "orange"]forfruitin fruits: print(fruit)# for...in:遍历字符串forcharin"Python": print(char) # P y t h o n# range:生成数字序列for i inrange(5): # 0,1,2,3,4 print(i)for i inrange(2, 8): # 2,3,4,5,6,7 print(i)for i inrange(1, 10, 2): # 1,3,5,7,9(步长2) print(i)# while:条件循环count = 0while count < 5: print(count) count += 1# break:跳出循环for i inrange(10): ifi==5: break # 到5就停了 print(i) # 0,1,2,3,4# continue:跳过本次for i inrange(10): ifi%2==0: continue # 偶数跳过 print(i) # 1,3,5,7,9
实战场景:range(len(list))配合索引遍历列表;while True配合break实现"直到用户输入正确为止"的输入验证。
# if / else:最基本的判断score = 85ifscore>=60: print("及格了")else: print("不及格")# elif:多个分支ifscore>=90: print("优秀")elif score >= 80: print("良好")elif score >= 60: print("及格")else: print("不及格")# Python 3.10+ 的 match...case(类似其他语言的switch)status = 404matchstatus: case200: print("成功") case404: print("未找到") case _: # 相当于default print("其他状态")
实战场景: 用户登录验证——if检查用户名是否存在,elif检查密码是否正确,else返回"登录失败"。
# import:导入模块import randomimport sys# random模块:随机数print(random.randint(1, 10)) # 1到10之间的随机整数print(random.choice(["a", "b", "c"])) # 随机选一个# sys模块:系统信息print(sys.path) # Python查找模块的路径列表print(sys.version) # Python版本# from...import:只导入需要的功能from math import sqrt, piprint(sqrt(16)) # 4.0print(pi) # 3.141592653589793
实战场景: 写猜数字游戏——import random,用random.randint(1,100)生成随机数;import sys读取命令行参数。
| | |
|---|
birthday | | |
year/month/day | | |
type | | |
error | | |
missing | | |
required | | |
positional | | |
unsupported | | |
# 定义函数:def + 函数名 + 参数defgreet(name): print(f"你好,{name}")greet("张三") # 你好,张三# 带多个参数def get_birthday(year, month, day): returnf"{year}年{month}月{day}日"print(get_birthday(1995, 8, 15)) # 1995年8月15日# 带默认值defgreet_user(name="游客"): print(f"欢迎,{name}")greet_user() # 欢迎,游客greet_user("李四") # 欢迎,李四# 检查参数类型defadd(a, b): ifnot (isinstance(a, (int, float)) andisinstance(b, (int, float))): raise TypeError("参数必须是数字类型") return a + b# 常见报错:TypeError: missing 1 required positional argument# 意思是你少传了一个必须的参数
实战场景: 把重复的代码封装成函数。比如写一个"计算BMI"的函数,传入身高体重,返回BMI值和健康评价。以后任何地方需要计算BMI,直接调用就行。
# *args:收集任意数量的位置参数defsum_all(*args): total = 0 fornumin args: total += num return totalprint(sum_all(1, 2, 3)) # 6print(sum_all(1, 2, 3, 4, 5)) # 15# **kwargs:收集任意数量的关键字参数defshow_info(**kwargs): forkey, value in kwargs.items(): print(f"{key} = {value}")show_info(name="张三", age=25, city="北京")# name = 张三# age = 25# city = 北京
实战场景: 写一个"发送通知"函数,用**kwargs接收各种自定义参数(标题、正文、发送时间、优先级等),灵活适应不同场景。
| | |
|---|
inside | | |
outside | | |
radius | | |
perimeter | | |
case | | |
# 嵌套函数:函数里面定义函数defouter(): x = "外部变量" definner(): print(x) # 内部可以访问外部的变量 inner()outer() # 外部变量# 闭包:内部函数记住外部函数的变量defmake_multiplier(n): defmultiplier(x): return x * n return multipliertimes2 = make_multiplier(2)times3 = make_multiplier(3)print(times2(5)) # 10print(times3(5)) # 15
实战场景: 闭包可以用来"记住"某种状态。比如创建一个计数器函数,每次调用都+1,而不需要用全局变量。
| | |
|---|
recursion | | |
Infinite | | |
maximum | | |
depth | | |
exceeded | | |
factorial | | |
search | | |
power | | |
lower/upper/middle | | |
# 阶乘:递归的经典例子# 5! = 5*4*3*2*1deffactorial(n): ifn==1: return1 else: return n * factorial(n - 1)print(factorial(5)) # 120# 递归深度限制:默认1000层# 超过会报错:RecursionError: maximum recursion depth exceeded# 二分查找(递归实现)defbinary_search(arr, target, low, high): iflow>high: return -1 mid = (low + high) // 2 ifarr[mid]==target: return mid elif arr[mid] > target: return binary_search(arr, target, low, mid - 1) else: return binary_search(arr, target, mid + 1, high)
实战场景: 遍历文件夹树、处理嵌套的JSON数据、解析XML——用递归比用循环简洁得多。
十七、列表推导式与lambda表达式(Python特色)
| | |
|---|
square | | |
even | | |
comprehension | | |
regular | | |
expression | | |
group | | |
match | | |
span | | |
ignore case | | |
multi line | | |
dot all | | |
unicode | | |
verbose | | |
pos/position | | |
# 列表推导式:一行生成列表squares = [x**2 for x in range(10)]print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 带条件的列表推导式:只取偶数evens = [x for x in range(20) if x % 2 == 0]print(evens) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]# lambda:匿名函数(一行搞定)square = lambda x: x**2print(square(5)) # 25# 排序时用lambda指定规则students = [("张三", 85), ("李四", 92), ("王五", 78)]students.sort(key=lambdax: x[1]) # 按成绩排序print(students) # [('王五', 78), ('张三', 85), ('李四', 92)]# 正则表达式相关(re模块)import repattern = re.compile(r'\d+', re.IGNORECASE) # 忽略大小写match = pattern.search("abc123def")print(match.group()) # 123print(match.span()) # (3, 6)
实战场景: 数据清洗时,[x.strip() for x in data]一行去掉所有字符串首尾空格;filter(lambda x: x > 0, numbers)筛选正数。
| | |
|---|
height | | |
width | | |
weight | | |
splicing | | |
params | | |
volume | | |
operand | | |
lambda | | |
execute | | |
# lambda的来源:希腊字母λ# Python借用来表示匿名函数add = lambda a, b: a + b# params:参数的简称,常用作变量名defcreate_user(params): name = params.get("name") age = params.get("age") returnf"创建用户:{name},年龄{age}"# splicing:拼接(字符串拼接常用)parts = ["Hello", "World"]result = " ".join(parts) # Hello World
实战场景:params是最常见的参数变量名;join()是字符串拼接的最高效方式。
这篇词汇表花了不少篇幅,但它的价值在于:每当你看到不认识的单词,不用去翻字典,来这里查就行。
我的建议是:不要死记硬背。 打开Python交互环境,每个词敲一遍示例代码,看看运行结果。敲得多了,自然就记住了。
如果觉得有用,欢迎点赞、收藏、转发给正在学Python的朋友。
你在学Python时还遇到过哪些让你头疼的词汇?评论区告诉我,我帮你加进这个词汇表里。