Python 常用知识点

1. 变量与基本类型

知识点:

  • Python 是动态类型语言,变量不用提前声明类型。
  • 变量本质是“名字”,绑定到某个值上。
  • 常见基础类型:str(字符串)、int(整数)、float(浮点数)、bool(布尔值)。
name = "Tom"       # str 字符串
age = 18           # int 整数
height = 1.75      # float 浮点数
is_student = True  # bool 布尔值

知识点:

  • type() 可以查看变量当前类型,调试时很常用。
print(type(name))  # <class 'str'>
print(type(age))   # <class 'int'>

知识点:

  • 不同类型之间可以转换,但要保证数据格式合法。
  • 比如 int("123") 可以,int("abc") 会报错。
age_str = str(age)      # int -> str
num = int("123")        # str -> int
price = float("19.9")   # str -> float

2. 输入与输出

知识点:

  • input() 用于接收用户输入,返回值永远是字符串。
  • 输出推荐用 f-string,可读性比字符串拼接更好。
name = input("请输入你的名字:")
print("你好," + name)
print(f"你好,{name}")  # 推荐:f-string

注意:如果要做数学计算,需要先把 input() 的结果转成 intfloat

3. 字符串常用操作

知识点:

  • 字符串是不可变类型,像 replace() 这类方法会返回新字符串。
  • 常见操作:去空格、大小写转换、替换、查找、拼接、切分。
text = "  hello python  "

print(text.strip())              # 去掉两端空格
print(text.upper())              # 大写
print(text.replace("python", "world"))
print("python" in text)          # 是否包含,返回 True/False
print(",".join(["a", "b", "c"])) # a,b,c
print("a,b,c".split(","))        # ['a', 'b', 'c']

4. 列表 list(最常用)

知识点:

  • list 是有序、可修改、可重复的序列。
  • 学列表重点掌握:增删改查、下标、切片。
nums = [10, 20, 30]
nums.append(40)      # 末尾添加
nums.insert(1, 15)   # 指定位置插入
nums.remove(20)      # 删除指定值(第一个匹配项)
last = nums.pop()    # 弹出最后一个并返回

print(nums)          # [10, 15, 30]
print(last)          # 40
print(nums[0])       # 下标访问
print(nums[-1])      # 最后一个元素
print(nums[0:2])     # 切片,不包含结束下标

知识点:

  • 遍历列表有两种常见方式:
  • 只要值:for n in nums
  • 同时要索引和值:enumerate(nums)
for n in nums:
    print(n)

for i, n in enumerate(nums):
    print(i, n)  # 索引 + 值

5. 元组 tuple、集合 set、字典 dict

元组 tuple(不可修改)

知识点:

  • tuple 和列表很像,但创建后不能修改,适合存“固定数据”。
point = (3, 5)
print(point[0])  # 3

集合 set(去重、交并差)

知识点:

  • set 无序且元素不重复,常用于去重和集合运算。
  • 常见运算:| 并集,& 交集。
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)  # 并集 {1,2,3,4,5}
print(a & b)  # 交集 {3}

字典 dict(键值对)

知识点:

  • dictkey -> value 存数据,查找很快。
  • get()[] 更安全:找不到键时不会直接报错。
user = {"name": "Tom", "age": 18}
print(user["name"])

user["city"] = "Shanghai"          # 新增
user["age"] = 19                   # 修改
print(user.get("email"))           # 不存在返回 None
print(user.get("email", "无邮箱"))  # 设置默认值

for k, v in user.items():
    print(k, v)

6. 条件判断

知识点:

  • if / elif / else 按顺序判断条件,命中一个分支后就不再往下判断。
  • 条件表达式结果必须是布尔值(True / False)。
score = 85

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
else:
    print("C")

知识点:

  • 比较运算符:> >= < <= == !=
  • 逻辑运算符:and or not
print(3 > 2)           # True
print(3 == 3)          # True
print(3 != 4)          # True
print(1 < 2 < 3)       # True,链式比较
print(True and False)  # False
print(True or False)   # True
print(not True)        # False

7. 循环

for 循环

知识点:

  • for 常用于“遍历一个序列”。
  • range(5) 会产生 0,1,2,3,4
for i in range(5):
    print(i)

while 循环

知识点:

  • while 在条件为真时反复执行,适合“不确定循环次数”的场景。
  • 一定要让条件最终变假,否则会死循环。
n = 3
while n > 0:
    print(n)
    n -= 1

知识点:

  • continue:跳过本次循环,进入下一次。
  • break:直接结束整个循环。
for i in range(1, 6):
    if i == 3:
        continue  # 跳过本次
    if i == 5:
        break     # 提前结束
    print(i)

8. 函数

知识点:

  • 函数用于“封装一段可复用逻辑”。
  • return 把结果返回给调用方。
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 8

知识点:

  • 默认参数:调用时可不传。
  • 关键字参数:调用时写参数名,代码更清晰。
def greet(name, msg="你好"):
    print(f"{msg}{name}")

greet("Tom")
greet("Jerry", msg="欢迎")

知识点:

  • *nums 可以接收任意数量的位置参数,函数里当作元组处理。
def total(*nums):
    return sum(nums)

print(total(1, 2, 3, 4))  # 10

9. 常用推导式(简洁好用)

知识点:

  • 推导式是“快速生成新容器”的写法。
  • 可读性优先:过于复杂时,改回普通循环更好。
nums = [1, 2, 3, 4, 5]

squares = [x * x for x in nums]                 # 列表推导式
evens = [x for x in nums if x % 2 == 0]
num_map = {x: x * x for x in nums}              # 字典推导式
num_set = {x % 3 for x in nums}                 # 集合推导式

print(squares)
print(evens)
print(num_map)
print(num_set)

10. 异常处理(避免程序崩溃)

知识点:

  • try 放可能报错的代码。
  • except 捕获并处理错误,避免程序直接中断。
  • finally 无论是否报错都会执行,常用于清理资源。
try:
    x = int(input("输入一个整数:"))
    print(10 / x)
except ValueError:
    print("输入不是整数")
except ZeroDivisionError:
    print("不能除以 0")
else:
    print("执行成功")
finally:
    print("程序结束")

11. 文件读写(非常常见)

知识点:

  • 文件操作推荐用 with open(...),代码结束后会自动关闭文件。
  • 写文本时建议显式加 encoding="utf-8",减少乱码问题。

写文件:

with open("note.txt", "w", encoding="utf-8") as f:
    f.write("第一行\n")
    f.write("第二行\n")

知识点:

  • read() 一次性读取全部内容,文件很大时要谨慎。

读文件:

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

知识点:

  • 逐行读取更省内存,处理大文件更常见。

逐行读取:

with open("note.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line.strip())

12. 模块与包

知识点:

  • 模块就是一个 .py 文件。
  • 包就是包含多个模块的目录(通常带 __init__.py)。
  • 使用 import 可以复用别人或自己写好的代码。

导入标准库:

import math
print(math.sqrt(16))  # 4.0

按需导入:

from datetime import datetime
print(datetime.now())

自定义模块(例如 utils.py):

# utils.py
def hello(name):
    return f"hello {name}"
# main.py
from utils import hello
print(hello("Tom"))

13. 常用标准库(入门最实用)

datetime 日期时间

知识点:

  • datetime.now() 获取当前时间。
  • timedelta 用于时间加减。
from datetime import datetime, timedelta

now = datetime.now()
tomorrow = now + timedelta(days=1)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(tomorrow.strftime("%Y-%m-%d"))

json JSON 处理

知识点:

  • dumps:Python 对象转 JSON 字符串。
  • loads:JSON 字符串转 Python 对象。
import json

data = {"name": "Tom", "age": 18}
s = json.dumps(data, ensure_ascii=False)  # dict -> json 字符串
obj = json.loads(s)                       # json 字符串 -> dict

print(s)
print(obj["name"])

pathlib 路径处理(推荐)

知识点:

  • pathlib 比字符串拼路径更安全,跨平台更友好。
  • / 可以优雅拼接路径。
from pathlib import Path

p = Path("demo") / "note.txt"
print(p)             # demo\note.txt (Windows)
print(p.exists())    # 文件是否存在

14. 面向对象基础(先会用就行)

知识点:

  • 类(class)是对象的“模板”,对象是类创建出来的实例。
  • 方法的第一个参数通常是 self,表示当前对象。
class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name}: 汪汪")

d = Dog("旺财")
d.bark()

重点记忆:

  • __init__:创建对象时自动调用,常用来初始化属性。
  • self.name = name:把传入参数保存到对象里。

15. 新手高频坑位

  • 缩进很重要:同一个代码块必须缩进一致(通常 4 个空格)。
  • 不要把 === 搞混:= 赋值,== 比较。
  • input() 返回字符串,需要时用 int()/float() 转换。
  • 列表和字典是可变对象,函数中修改会影响原对象。
  • 文件读写尽量用 with open(...),自动关闭文件更安全。

16. 一份日常脚本小例子(整合)

需求:输入若干数字,计算平均值,保存到文件。

这个小例子会用到的知识点:

  • input() 获取用户输入
  • 列表推导式做数据清洗
  • try/except 处理非法输入
  • with open(...) 写文件
nums_text = input("请输入数字,用逗号分隔(例如 10,20,30):")

try:
    nums = [float(x.strip()) for x in nums_text.split(",") if x.strip()]
    if not nums:
        raise ValueError("没有有效数字")

    avg = sum(nums) / len(nums)
    result = f"数量: {len(nums)}, 平均值: {avg:.2f}"
    print(result)

    with open("result.txt", "w", encoding="utf-8") as f:
        f.write(result)
except ValueError as e:
    print("输入有误:", e)