💡 硬核干货警告:这篇文章我斥巨资(熬了两个通宵)整理,没有废话,全是实用知识点,新手大佬都能有收获!建议点赞收藏慢慢看~
为什么选Python?三句话说服你
Python现在这么火,到底值不值得学?我给你三个铁理由:
学一天能干活,学一周能干大活:语法超简单,基本不需要背,敲起来像写英语作文
能实现的太多了:爬虫、数据分析、人工智能、自动化、网站开发...选一个入门就能接活
工资高需求大:各大招聘网站数据显示,Python相关岗位平均薪资比同级Java、PHP高出约15%
不多说了,直接开干!
基础语法
1. 变量和数据类型
Python变量不用声明类型,超简单:
# 变量赋值,随便用
name="老王"
age=35
height=1.75
is_programmer=True
# 常用数据类型
my_list= [1,
2, 3] # 列表(可改)
my_tuple= (1, 2, 3) # 元组(不可改)
my_dict= {"姓名": "老王"} # 字典
my_set= {1, 2, 3} # 集合(无重复)
2. 条件判断:if语句
Python用缩进来表示代码块,四个空格是标准:
score=85
ifscore>=90:
print("优秀")
elifscore>=80:
print("良好")
elifscore>=60:
print("及格")
else:
print("不及格")
3. 循环:for和while
两种循环任你选:
# for循环更常用
foriinrange(5):
print(i) # 打印0,1,2,3,4
# while循环
i=0
whilei<5:
print(i)
i+=1 # 别忘了加1,否则无限循环
4. 函数:代码复用神器
# 定义函数
defcalculate_price(price, discount=0.9):
"""计算折扣后价格"""
final_price=price*discount
returnfinal_price
# 调用函数
price=calculate_price(100) # 90.0
price=calculate_price(100, 0.8) # 80.0
5. 列表操作大全
列表是Python最常用的数据结构,必须烂熟于心:
# 创建列表
fruits= ["苹果", "香蕉", "橙子"]
# 添加元素
fruits.append("西瓜") # 末尾添加
fruits.insert(1, "葡萄") # 指定位置插入
# 删除元素
fruits.remove("香蕉") # 删除特定元素
delfruits[0] # 删除指定位置
last=fruits.pop() # 弹出最后一个并返回
# 切片操作
numbers= [0, 1, 2, 3, 4, 5]
print(numbers[1:4]) # [1, 2, 3] 不包括结束索引
print(numbers[:3]) # [0, 1, 2] 从头开始
print(numbers[2:]) # [2, 3, 4, 5] 到末尾
print(numbers[::2]) # [0, 2, 4] 步长为2
print(numbers[::-1]) # [5, 4, 3, 2, 1, 0] 反转
超实用代码片段
掌握这些代码片段,能解决80%的Python日常需求:
1. 文件读写
# 写入文件
withopen("data.txt", "w", encoding="utf-8") asf:
f.write("Python速成宝典\n第一行\n第二行")
# 读取文件
withopen("data.txt", "r", encoding="utf-8") asf:
content=f.read()
print(content)
# 逐行读取(大文件更省内存)
withopen("data.txt", "r", encoding="utf-8") asf:
forlineinf:
print(line.strip()) # strip()去除换行符
2. 列表推导式
用一行代码生成列表,省去大量循环:
# 普通循环
squares= []
forxinrange(10):
squares.append(x**2)
# 用列表推导式一行搞定
squares= [x**2forxinrange(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 带条件的列表推导式
even_squares= [x**2forxinrange(10) ifx%2==0]
print(even_squares) # [0, 4, 16, 36, 64]
3. 日期时间处理
fromdatetimeimportdatetime, timedelta
# 获取当前时间
now=datetime.now()
print(now) # 2025-04-19 15:30:45.123456
# 格式化日期
formatted=now.strftime("%Y年%m月%d日 %H:%M:%S")
print(formatted)
# 2025年04月19日 15:30:45
# 计算日期差
future=now+timedelta(days=10)
difference=future-now
print(difference.days) # 10
4. 随机数生成
importrandom
# 随机整数
print(random.randint(1, 100)) # 1到100之间的随机整数
# 随机选择
fruits= ["苹果", "香蕉", "橙子", "葡萄"]
print(random.choice(fruits)) # 随机选一个
print(random.sample(fruits, 2)) # 随机选两个,不重复
5. 字符串处理
text=" Python是世界上最好的语言 "
# 去除空格
print(text
.strip()) # "Python是世界上最好的语言"
# 替换
print(text.replace("最好", "最简单"))
# 分割
words="Python,Java,C++".split(",")
print(words) # ['Python', 'Java', 'C++']
# 连接
print("-".join(words)) # Python-Java-C++
# 判断开头结尾
print("Python很强大".startswith("Python")) # True
print("学习Python".endswith("Python")) # True
6. 字典操作
# 创建字典
user= {
"name": "老王",
"age": 35,
"skills": ["Python", "Java"]
}
# 访问(安全方式)
print(user.get("age")) # 35
print(user.get("height", 175)) # 如果没有key,返回默认值175
# 添加/修改
user
["location"] ="北京"
user["age"] =36
# 遍历
forkey, valueinuser.items():
print(f"{key}: {value}")
7. JSON处理
importjson
# 字典转JSON字符串
user= {"name": "老王", "age": 35}
json_str=json.dumps(user, ensure_ascii=False) # 确保中文正常显示
print(json_str) # {"name": "老王", "age": 35}
# JSON字符串转字典
data=json.loads(json_str)
print(data["name"]) # 老王
# 保存到文件
withopen("user.json", "w", encoding="utf-8") asf:
json.dump(user, f,
ensure_ascii=False)
# 从文件读取
withopen("user.json", "r", encoding="utf-8") asf:
data=json.load(f)
8. 正则表达式
importre
# 匹配手机号
text="联系方式:13812345678,或者13987654321"
phones=re.findall(r"1\d{10}", text)
print(phones) # ['13812345678', '13987654321']
# 替换敏感词
text="你好,我的密码是123456,别告诉别人"
safe_text=re.sub(r"密码是\d+", "密码是******", text)
print(safe_text) # 你好,我的密码是******,别告诉别人
9. 爬虫基础
importrequests
frombs4import
BeautifulSoup
# 获取网页内容
url="https://www.example.com"
response=requests.get(url)
html=response.text
# 解析HTML
soup=BeautifulSoup(html, "html.parser")
title=soup.title.text
print(title) # 网页标题
# 获取所有链接
links= []
forlinkinsoup.find_all("a"):
links.append(link.get("href"))
print(links)
10. 数据分析入门
importpandasaspd
importmatplotlib.pyplotasplt
# 创建数据表
data= {
"姓名": ["张三", "李四", "王五", "赵六"],
"年龄": [25, 30, 22,
28],
"工资": [8000, 12000, 6500, 11000]
}
df=pd.DataFrame(data)
print(df)
# 数据分析
print(df.describe()) # 统计信息
print(df.sort_values("工资", ascending=False)) # 按工资降序
# 简单可视化
df.plot(kind="bar", x="姓名", y="工资")
plt.title("员工工资对比")
plt.savefig("salary.png")
plt.close()
11. Excel处理
importpandasaspd
# 读取Excel
df=pd.read_excel("data.xlsx", sheet_name="Sheet1")
print(df.head()) # 显示前5行
# 修改数据
df["总分"] =df["语文"] +df["数学"] +df["英语"]
# 保存到Excel
df.to_excel("result.xlsx", index=False)
12. 图像处理
fromPILimportImage, ImageFilter
# 打开图片
img=Image.open("photo.jpg")
# 调整大小
resized=img.resize((300, 200))
resized.save("photo_small.jpg")
# 裁剪图片
box= (100, 100, 400, 400) # (左, 上, 右, 下)
cropped=img.crop(box)
cropped.save("photo_cropped.jpg")
# 添加滤镜
blurred=img.filter(ImageFilter.BLUR)
blurred.save("photo_blur.jpg")
13. 多线程提速
importthreading
importtime
deftask(name, seconds):
print(f"任务 {name} 开始")
time.sleep(seconds) # 模拟耗时操作
print(f"任务 {name} 结束,耗时 {seconds} 秒")
# 创建线程
threads= []
foriinrange(5):
t=threading.Thread(target=task, args=(f"线程{i}", i))
threads.append(t)
t.start()
# 等待所有线程完成
fortinthreads:
t.join()
print("所有任务完成!")
14. 声明式类型提示(Python 3.6+)
fromtypingimportList, Dict, Optional
defcalculate_average(numbers: List[float]) ->float:
"""计算平均值"""
returnsum(numbers) /len(numbers)
defget_user(user_id: int) ->Optional[Dict[str, str]]:
"""获取用户信息,可能返回None"""
users= {1: {"name": "张三", "email": "zhangsan@example.com"}}
returnusers.get(user_id)
# 使用
avg=calculate_average([1.5, 2.5, 3.5]) # 2.5
user=get_user(1) # {"name": "张三", "email": "zhangsan@example.com"}
避坑指南:新手常踩10大坑
1. 缩进不一致
# 错误示范
ifTrue:
print("第一行")
print("第二行") # 缩进只有3个空格,报错!
# 正确做法
ifTrue:
print("第一行")
print("第二行") # 都是4个空格
2. 可变默认参数
# 错误示范
defadd_item(item, items=[]): # 危险!默认列表是共享的
items.append(item)
returnitems
print(add_item("a")) # ['a']
print(add_item("b")) # ['a', 'b'] 而不是 ['b']
# 正确做法
defadd_item(item, items=None):
ifitemsisNone:
items= []
items.append(item)
returnitems
3. 循环中修改列表
# 错误示范
numbers= [1, 2, 3, 4, 5]
foriinrange(len(numbers)):
ifnumbers[i] %2==0:
numbers.remove(numbers[i]) # 会跳过元素!
# 正确做法
numbers= [1, 2, 3, 4, 5]
numbers= [xforxinnumbersifx%2!=0] # 用列表推导式
# 或者
numbers= [1, 2, 3, 4, 5]
fornuminnumbers[:]: # 使用切片创建副本
ifnum%2==0:
numbers.remo
ve(num)4. 变量作用域
# 错误示范
defincrease_counter():
counter+=1 # UnboundLocalError
# 正确做法
defincrease_counter():
globalcounter
counter+=1
5. 忘记关闭文件
# 错误示范
f=open("data.txt", "w")
f.write("内容")
# 忘记关闭文件
# 正确做法(自动关闭)
withopen("data.txt", "w") asf:
f.write("内容")
6. 字符串格式化
# 老式写法(不推荐)
name="老王"
age=35
print("我叫%s,今年%d岁"% (name, age))
# 更好的方式(推荐)
print(f"我叫{name},今年{age}岁") # Python 3.6+
7. 遍历字典错误
# 危险的方式
my_dict= {"a": 1, "b": 2}
forkeyinmy_dict:
ifkey=="a":
my_dict["c"] =3 # 遍历时修改字典,可能导致错误
# 安全的方式
forkeyinlist(my_dict.keys()):
ifkey=="a":
my_dict["c"] =3
8. 浮点数比较
# 错误示范
a=0.1+0.2
print(a==0.3) # False,因为浮点数精度问题
# 正确做法
importmath
print(math.isclose(a, 0.3, abs_tol=1e-9)) # True
9. 异常处理太宽泛
# 错误示范
try:
# 一大堆代码
pass
except: # 捕获所有异常,难以调试
pass
# 正确做法
try:
# 代码
pass
exceptValueError:
# 处理特定异常
pass
exceptExceptionase:
# 记录详细错误
print(f"发生错误: {e}")
10. 深浅拷贝混淆
# 错误示范
list1= [1, [2, 3]]
list2=list1.copy() # 浅拷贝
list2[1][0] =9
print(list1) # [1, [9, 3]] list1也被修改了!
# 正确做法
importcopy
list1= [1, [2, 3]]
list2=copy.deepcopy(list1) # 深拷贝
list2[1][0] =9
print(list1) # [1, [2, 3]] list1不变
关注+点赞+在评论区说出你最想学的Python方向,也欢迎留言提问~
对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群
备注【成长交流】