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

news/2024/11/8 4:56:59 标签: 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">andor在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">anyall函数用于检查序列中是否存在任一项或全部项为真。

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

加油吧!卷卷卷


http://www.niftyadmin.cn/n/5743244.html

相关文章

恢复rm -rf删除的数据

注&#xff1a;本文演示的是ext4文件系统格式数据恢复 系统版本&#xff1a;ubuntu16.04 恢复数据目录&#xff1a;数据盘&#xff08;非根&#xff09;目录 恢复工具&#xff1a;extundelete 0.2.4 恢复所有被删除数据 ext4magic 恢复指定目录数据 一、注意事项&#xff1a; …

RK3576 LINUX RKNN SDK 测试

安装Conda工具 安装 Miniforge Conda wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh chmod 777 Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.shsource ~/miniforge3/bin/activate # Miniforge 安装的…

[docker]拉取镜像失败

List item vim /etc/docker/daemon.json在insecure-registries中添加你的socket&#xff08;IP端口号&#xff09; {"bip": "33.33.33.1/24","registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],"insecure-registri…

2024年国家信息安全水平等级考试NISP二级题目卷(二)(答案附后)

国家信息安全水平等级考试NISP二级卷为100道单选题&#xff0c;每题一分&#xff0c;共100分&#xff0c;70分合格&#xff0c;考试时长为120分钟。 1. 处理报废电脑的流程时&#xff0c;以下哪一个选项对于安全专业人员来说是最重要考虑的内容&#xff1f; A.在扇区这个级别…

【科普笔记】——什么是环境变量

定义 环境变量&#xff08;environment variables&#xff09;是操作系统中用来指定操作系统运行环境的一些参数。它们是操作系统中的一个具有特定名字的对象&#xff0c;包含了一个或多个应用程序将使用到的信息。环境变量可以影响程序的运行方式&#xff0c;为系统和应用程序…

输入两个整数求a~~b整数的和(c基础)

#include<stdio.h> int main() {int a 0;int b 0;int answer 0;scanf_s("%d %d", &a, &b);a < b ? (a a, b b) : (a a b, b a - b, a a - b);for (a a; a < b; a)answer a;printf("%d", answer);return 0; } 介绍一下三目…

【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)

概述 在现代数据库系统中&#xff0c;压缩技术对于提高存储效率和加速查询性能至关重要。特别是在处理大规模数据时&#xff0c;压缩能够极大地减少存储空间&#xff0c;并优化查询性能。本文将总结几种常见的压缩方式&#xff0c;并通过详细的解释和示例清晰地展示每种压缩方…

Unreal5从入门到精通之如何在指定的显示器上运行UE程序

前言 我们有一个设备,是一个带双显示器的机柜,主显示器是一个小竖屏,可以触屏操作,大显示器是一个普通的横屏显示器。我们用这个机柜的原因就是可以摆脱鼠标和键盘,直接使用触屏操作,又可以在大屏观看,非常适合用于教学。 然后我们为这款机柜做了很多个VR项目,包括Uni…