Python学习大纲总结及注意事项

1. Python基础

•	Python基础语法:变量、常量、数据类型(字符串、整数、浮点数、布尔值)、运算符、表达式。

•	控制结构:条件语句(if-elif-else)、循环语句(for循环和while循环)、循环控制语句(break、continue、pass)。
•	数据结构:
•	列表:列表的创建、增删改查、切片、列表推导式。
•	元组:不可变序列,适用于不需要修改的数据。
•	集合:集合操作(交集、并集、差集)、去重、集合推导式。
•	字典:键值对存储、增删改查、字典推导式。

变量与数据类型:
x = 10            # 整数
y = 3.14          # 浮点数
name = "Alice"    # 字符串
is_student = True # 布尔值
print(x, y, name, is_student)


控制结构:
age = 18
if age >= 18:
    print("Adult")
else:
    print("Minor")

for i in range(5):   # 循环打印0到4
    print(i)


数据结构:

# 列表
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)    # 输出 ['apple', 'banana', 'cherry', 'orange']
# 字典
person = {"name": "Alice", "age": 25}
print(person["name"])   # 输出 Alice

2. 函数编程

•	函数的定义和调用:参数传递(位置参数、关键字参数、默认参数、可变参数)、返回值。
•	匿名函数:lambda表达式的使用。
•	函数的高级用法:闭包、装饰器、递归函数。
•	内置函数:常用内置函数(如map、filter、reduce、zip等)。
python 复制代码
函数定义:
def greet(name):
    return f"Hello, {name}!"
print(greet("Alice"))   # 输出 Hello, Alice!
匿名函数:
add = lambda x, y: x + y
print(add(5, 3))   # 输出 8
常用内置函数:
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)   # 输出 [2, 4, 6, 8, 10]

3. 面向对象编程(OOP)

•	类与对象:类的定义、实例化对象、构造函数__init__。
•	类的成员:类属性、实例属性、方法(普通方法、类方法、静态方法)。
•	继承和多态:继承的概念、方法重写、super()函数的使用。
•	特殊方法:__str__、__repr__、__len__、运算符重载等。
•	封装、继承、多态:类的封装性、访问控制(公有、私有、受保护属性)、多态性。
python 复制代码
类和对象:
class Dog:
    def __init__(self, name):
        self.name = name
    def bark(self):
        print(f"{self.name} is barking!")
my_dog = Dog("Buddy")
my_dog.bark()   # 输出 Buddy is barking!

继承:
class Animal:
    def speak(self):
        print("Animal sound")
class Dog(Animal):
    def speak(self):
        print("Woof!")
dog = Dog()
dog.speak()   # 输出 Woof!

4. 模块和包

•	模块的创建和导入:import、from...import语句、as起别名。
•	标准库的使用:math、random、datetime、os、sys等模块。
•	包的管理:创建包、__init__.py文件的作用、包的导入。
python 复制代码
导入模块:
import math
print(math.sqrt(16))   # 输出 4.0

自定义模块:创建一个名为mymodule.py的文件
# mymodule.py
def greet(name):
    print(f"Hello, {name}!")
# 使用自定义模块
import mymodule
mymodule.greet("Alice")   # 输出 Hello, Alice!

5. 文件操作

•	文件读写:文件的打开与关闭、read、write、readlines、writelines等方法。
•	文件的模式:文本模式、二进制模式、追加模式等。
•	文件路径操作:使用os模块、文件与目录的创建与删除。
python 复制代码
文件读写:
# 写入文件
with open("example.txt", "w") as f:
    f.write("Hello, world!")
# 读取文件
with open("example.txt", "r") as f:
    content = f.read()
    print(content)   # 输出 Hello, world!

6. 异常处理

•	异常的捕获:try-except结构、捕获多种异常、else和finally子句的使用。
•	自定义异常:创建自定义异常类,使用raise抛出异常。
•	常见异常类型:IndexError、KeyError、ValueError、TypeError等。
python 复制代码
捕获异常:
try:
    x = int(input("Enter a number: "))
except ValueError:
    print("That's not a valid number!")

7. 高级特性

•	生成器:yield、生成器表达式、生成器的应用场景。
•	迭代器:__iter__和__next__方法、创建自定义迭代器。
•	装饰器:函数装饰器、类装饰器。
•	上下文管理器:with语句、__enter__和__exit__方法的实现。
python 复制代码
生成器:

def countdown(n):
    while n > 0:
        yield n
        n -= 1

for number in countdown(3):
    print(number)   # 输出 3 2 1


装饰器:

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

8. 数据处理与分析

•	第三方库:
•	NumPy:数值计算,数组操作。
•	Pandas:数据清洗与分析,DataFrame的操作。
•	Matplotlib & Seaborn:数据可视化,绘制图表。
•	数据读取与写入:读取CSV、Excel、数据库数据,数据导出等。
python 复制代码
NumPy和Pandas:

import numpy as np
import pandas as pd

data = np.array([1, 2, 3, 4])
print(data * 2)   # 输出 [2 4 6 8]

df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
print(df)

9. 网络编程

•	网络请求:使用requests库进行HTTP请求,处理JSON数据。
•	Socket编程:Socket的基本概念、创建TCP和UDP连接。
•	爬虫入门:基础爬虫、正则表达式、BeautifulSoup和XPath。
python 复制代码
	•	使用Requests库:

import requests

response = requests.get("www.baidu.con")
print(response.json())

10. 多线程与多进程

•	多线程:线程的创建、线程同步、线程锁、threading模块。
•	多进程:进程的创建、进程间通信、multiprocessing模块。
•	协程:异步编程、asyncio库。
python 复制代码
多线程:

import threading

def print_numbers():
    for i in range(5):
        print(i)

thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()

11. 数据库操作

•	数据库基础:关系型数据库、SQL语句。
•	SQLite:内置数据库操作,数据的增删改查。
•	MySQL和PostgreSQL:使用pymysql或psycopg2库进行连接与操作。
•	ORM:使用SQLAlchemy等库进行ORM操作。
python 复制代码
SQLite操作:

import sqlite3

conn = sqlite3.connect("example.db")
c = conn.cursor()

c.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
c.execute("INSERT INTO users (name) VALUES ('Alice')")
conn.commit()

for row in c.execute("SELECT * FROM users"):
    print(row)

conn.close()

12. 测试与调试

•	单元测试:unittest框架的使用,编写测试用例。
•	调试技巧:pdb模块、断点调试、日志记录(logging模块)。
•	代码规范:PEP8规范、文档字符串、类型注解。
python 复制代码
单元测试:

import unittest

def add(x, y):
    return x + y

class TestMath(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(3, 4), 7)

if __name__ == '__main__':
    unittest.main()

13. 常用工具

•	虚拟环境:使用venv或virtualenv创建虚拟环境。
•	包管理:使用pip安装、更新、卸载包。
•	Git版本控制:基本操作(clone、commit、push、pull等),Git分支管理。
python 复制代码
虚拟环境:
python3 -m venv myenv
source myenv/bin/activate  # 激活虚拟环境 (Linux/Mac)
myenv\Scripts\activate     # 激活虚拟环境 (Windows)

Git基本操作:
git init
git add .
git commit -m "Initial commit"
git push origin main

常见的注意事项:
1. 变量命名规范

•	遵循PEP 8命名规范,变量名使用小写字母并用下划线分隔,如total_sum、user_name。
•	常量使用全大写字母,并用下划线分隔,如MAX_SIZE。
•	类名使用首字母大写的驼峰命名法,如MyClass。

2. 避免使用可变默认参数

python 复制代码
Python中的函数参数是按引用传递的,如果使用可变对象(如列表、字典等)作为默认参数,可能会导致意想不到的结果。
建议将默认参数设为None,在函数内部初始化。

def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

3. 注重代码的可读性

•	Python代码应尽量清晰、简洁,避免复杂的嵌套,使用空行和适当的注释。
•	适当使用空行分隔不同逻辑块,增加可读性。

4. 理解浅拷贝和深拷贝

python 复制代码
使用copy模块的copy()和deepcopy()区分浅拷贝与深拷贝。
浅拷贝会复制对象本身,而深拷贝会递归复制所有嵌套的对象。

import copy

list1 = [1, [2, 3]]
list2 = copy.copy(list1)       # 浅拷贝
list3 = copy.deepcopy(list1)    # 深拷贝

5. 用is判断None

python 复制代码
检查一个变量是否为None,推荐使用is而不是==,避免潜在的意外行为。

if my_var is None:
    print("my_var is None")

6. 条件表达式中的and和or短路

python 复制代码
and和or在Python中是短路求值,and在第一个条件为假时停止,or在第一个条件为真时停止。
利用短路特性可以优化代码,减少不必要的计算。

a = None
b = "Hello"
result = a or b     # 返回 "Hello",因为a为None

7. 理解迭代器与生成器

python 复制代码
使用生成器(yield关键字)可以节省内存,特别适合大数据处理或无限序列。
生成器函数不会一次性生成所有数据,而是按需生成,减少内存占用。

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)

8. 避免过多的嵌套

•	嵌套过深会影响代码的可读性,建议用早返回、合并条件等方式简化逻辑。

不推荐

python 复制代码
if condition1:
    if condition2:
        if condition3:
            do_something()

推荐

python 复制代码
if not condition1 or not condition2 or not condition3:
    return
do_something()

9. 使用列表推导式提升效率

python 复制代码
列表推导式能简化代码、提高可读性,但要避免过于复杂的推导式,保持代码清晰。

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers if x > 2]

10. 使用上下文管理器(with语句)

python 复制代码
with语句自动管理资源的释放,适用于文件操作、数据库连接等。

with open("file.txt", "r") as f:
    content = f.read()

离开with块后文件自动关闭

11. 避免捕获所有异常

python 复制代码
捕获异常时,尽量指定异常类型,不要直接用except:或except Exception:
这样能避免意外捕获其他异常,导致问题难以排查。


try:
    result = 1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero")

12. 使用合适的数据结构

•	根据数据类型和操作需求选择合适的数据结构,Python提供列表、集合、字典、元组等多种结构。
•	例如,若数据无重复需求,用集合set;若要频繁查找元素,用字典dict。

13. 避免在循环内重复计算

•	在循环中避免重复计算相同的值,可以提前计算并保存,提高效率。

不推荐

python 复制代码
for _ in range(len(my_list)):
    do_something(len(my_list))

推荐

python 复制代码
list_length = len(my_list)
for _ in range(list_length):
    do_something(list_length)

14. 用enumerate和zip提升循环效率

python 复制代码
enumerate函数为循环提供索引,而zip可以同步遍历多个序列。

names = ["Alice", "Bob", "Charlie"]
for index, name in enumerate(names):
    print(index, name)

list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
for a, b in zip(list1, list2):
    print(a, b)

15. 避免滥用全局变量

•	全局变量会增加代码的耦合性,使得函数的行为不易预测,推荐使用局部变量。

16. 使用f字符串

python 复制代码
f字符串是Python 3.6后推荐的格式化字符串方式,效率更高且更简洁。

name = "Alice"
age = 25
print(f"My name is {name} and I'm {age} years old")

17. 合理使用注释和文档字符串

python 复制代码
为复杂的代码逻辑添加注释,保持代码易于理解。
使用三重引号(""")为模块、类、函数添加文档字符串,以便自动生成文档或帮助信息。

def add(a, b):
    """
    This function adds two numbers.
    Parameters:
        a (int): The first number.
        b (int): The second number.
    Returns:
        int: The sum of a and b.
    """
    return a + b

18. Python中的"真"与"假"

•	在Python中,0、空字符串、空列表、空字典、None等都被视为假值。
•	判断是否为空时,直接使用if not my_list而不是if len(my_list) == 0。

19. 尽量用any和all简化判断

python 复制代码
any和all函数用于检查序列中是否存在任一项或全部项为真。

values = [0, 1, 2]
if any(values):     # 只要有一个非零值就为True
    print("At least one true value")

if all(values):     # 全部非零才为True
    print("All values are true")

20. 避免无意义的列表创建

•	使用生成器表达式代替不必要的列表创建,可以节省内存。

推荐

python 复制代码
sum(x * x for x in range(10))

不推荐

python 复制代码
sum([x * x for x in range(10)])

21. 合理使用断言(assert)

•	断言用于在开发和调试中捕获逻辑错误,而不是替代异常处理。
•	在发布代码时可以通过禁用断言提升性能,避免在生产环境中使用。
python 复制代码
def calculate_square(n):
    assert n >= 0, "Number must be non-negative"
    return n * n

加油吧!卷卷卷

相关推荐
SomeB1oody4 分钟前
【Rust自学】5.1. 定义并实例化struct
开发语言·后端·rust
心之所想,行之将至18 分钟前
零基础开始学习鸿蒙开发-交友软件页面设计
学习·交友
Null箘22 分钟前
从零创建一个 Django 项目
后端·python·django
云空25 分钟前
《解锁 Python 数据挖掘的奥秘》
开发语言·python·数据挖掘
青莳吖36 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
Buleall43 分钟前
期末考学C
java·开发语言
重生之绝世牛码1 小时前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行1 小时前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
玖年1 小时前
Python re模块 用法详解 学习py正则表达式看这一篇就够了 超详细
python
Algorithm15761 小时前
云原生相关的 Go 语言工程师技术路线(含博客网址导航)
开发语言·云原生·golang