Py学习  »  Python

Python速成宝典:一天从入门到实战,建议收藏!

A逍遥之路 • 3 月前 • 173 次点击  

💡 硬核干货警告:这篇文章我斥巨资(熬了两个通宵)整理,没有废话,全是实用知识点,新手大佬都能有收获!建议点赞收藏慢慢看~

为什么选Python?三句话说服你

Python现在这么火,到底值不值得学?我给你三个铁理由:

  • 学一天能干活,学一周能干大活:语法超简单,基本不需要背,敲起来像写英语作文

  • 能实现的太多了:爬虫、数据分析、人工智能、自动化、网站开发...选一个入门就能接活

  • 工资高需求大:各大招聘网站数据显示,Python相关岗位平均薪资比同级Java、PHP高出约15%

不多说了,直接开干!

基础语法

1. 变量和数据类型

Python变量不用声明类型,超简单:

# 变量赋值,随便用
name="老王"
age=35
height=1.75
is_programmer=True

# 常用数据类型
my_list= [123]           # 列表(可改)
my_tuple = (123)          # 元组(不可改)
my_dict= {"姓名""老王"}     # 字典
my_set= {123}            # 集合(无重复)

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(pricediscount=0.9):
    """计算折扣后价格"""
    final_price=price*discount
    returnfinal_price

# 调用函数
price=calculate_price(100)     # 90.0
price=calculate_price(1000.8# 80.0

5. 列表操作大全

列表是Python最常用的数据结构,必须烂熟于心:

# 创建列表
fruits= [ "苹果""香蕉""橙子"]

# 添加元素
fruits.append("西瓜")         # 末尾添加
fruits.insert(1"葡萄")      # 指定位置插入

# 删除元素
fruits.remove("香蕉")         # 删除特定元素
delfruits[0]                # 删除指定位置
last=fruits.pop()          # 弹出最后一个并返回

# 切片操作
numbers= [012345]
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(10ifx%2==0]
print(even_squares)  # [0, 4, 16, 36, 64]

3. 日期时间处理

fromdatetimeimportdatetimetimedelta

# 获取当前时间
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(1100))  # 1到100之间的随机整数

# 随机选择
fruits= ["苹果""香蕉""橙子""葡萄"]
print(random.choice(fruits))  # 随机选一个
print(random.sample(fruits2))  # 随机选两个,不重复

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

# 遍历
forkeyvalueinuser. items():
    print(f"{key}{value}")

7. JSON处理

importjson

# 字典转JSON字符串
user= {"name""老王""age"35}
json_str=json.dumps(userensure_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(userfensure_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
frombs4importBeautifulSoup

# 获取网页内容
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= {
    "姓名": ["张三""李四""王五""赵六"],
    "年龄": [25302228],
    "工资": [800012000650011000]
}
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. 图像处理

fromPILimportImageImageFilter

# 打开图片
img=Image.open("photo.jpg")

# 调整大小
resized=img.resize((300200))
resized.save("photo_small.jpg")

# 裁剪图片
box= (100100400400)  # (左, 上, 右, 下)
cropped=img.crop(box)
cropped.save("photo_cropped.jpg")

# 添加滤镜
blurred=img.filter(ImageFilter.BLUR)
blurred.save("photo_blur.jpg")

13. 多线程提速

importthreading
importtime

deftask(nameseconds):
    print(f"任务 {name} 开始")
    time.sleep(seconds)  # 模拟耗时操作
    print(f"任务 {name} 结束,耗时 {seconds} 秒")

# 创建线程
threads= []
foriinrange(5):
    t=threading.Thread(target=taskargs=(f"线程{i}"i))
    threads.append(t)
    t.start()

# 等待所有线程完成
fortinthreads:
    t.join()

print("所有任务完成!")

14. 声明式类型提示(Python 3.6+)

fromtypingimportListDictOptional

defcalculate_average(numbers List[float]) ->float:
    """计算平均值"""
    returnsum(numbers/len(numbers)

defget_user(user_idint->Optional[Dict[strstr]]:
    """获取用户信息,可能返回None"""
    users= {1: {"name""张三""email""zhangsan@example.com"}}
    returnusers.get(user_id)

# 使用
avg=calculate_average([1.52.53.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(itemitems=[]):  # 危险!默认列表是共享的
    items.append(item)
    returnitems

print(add_item("a"))  # ['a']
print(add_item("b"))  # ['a', 'b'] 而不是 ['b']

# 正确做法
defadd_item(itemitems=None):
    ifitemsisNone:
        items= []
    items.append(item)
    returnitems

3. 循环中修改列表

# 错误示范
numbers= [12345]
foriinrange(len(numbers)):
    ifnumbers[i%2==0:
        numbers.remove(numbers[i])  # 会跳过元素!

# 正确做法
numbers= [12345]
numbers= [xforxinnumbersifx%2!=0]  # 用列表推导式
# 或者
numbers= [12345]
fornuminnumbers[:]:  # 使用切片创建副本
    ifnum%2==0:
        numbers.remove(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岁"% (nameage))

# 更好的方式(推荐)
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(a0.3abs_tol= 1e-9))  # True

9. 异常处理太宽泛

# 错误示范
try:
    # 一大堆代码
    pass
except:  # 捕获所有异常,难以调试
    pass

# 正确做法
try:
    # 代码

    pass
exceptValueError:
    # 处理特定异常
    pass
exceptExceptionase:
    # 记录详细错误
    print(f"发生错误: {e}")

10. 深浅拷贝混淆

# 错误示范
list1= [1, [23]]
list2=list1.copy()  # 浅拷贝
list2[1][0=9
print(list1)  # [1, [9, 3]] list1也被修改了!

# 正确做法
importcopy
list1= [1, [23]]
list2=copy.deepcopy(list1)  # 深拷贝
list2[1][0=9
print(list1)  # [1, [2, 3]] list1不变

关注+点赞+在评论区说出你最想学的Python方向,也欢迎留言提问~

转发、收藏、在看,是对作者最大的鼓励!👏
关注逍遥不迷路,Python知识日日补!






           对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群

备注【成长交流】

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181394
 
173 次点击