一、环境搭建

  1. 安装Python

    • 推荐去 Python官网 下载最新版。
    • 安装后可在命令行输入 python --version 检查是否安装成功。
  2. IDE推荐


二、语法基础

  1. Hello World

    print("Hello, world!")
    
  2. 变量和数据类型

    name = "Alice"     # 字符串
    age = 18           # 整数
    height = 1.75      # 浮点数
    is_student = True  # 布尔值
    
  3. 注释

    # 这是单行注释
    """
    这是多行注释
    """
    

三、常用数据类型

  1. 字符串

    s = "Hello"
    print(s.upper())  # 转大写
    
  2. 列表

    lst = [1, 2, 3]
    lst.append(4)
    print(lst)
    
  3. 元组

    tup = (1, 2, 3)
    print(tup[0])
    
  4. 字典

    d = {"name": "Tom", "age": 20}
    print(d["name"])
    

四、流程控制

  1. 条件语句

    if age > 18:
        print("成年人")
    elif age == 18:
        print("刚成年")
    else:
        print("未成年")
    
  2. 循环语句

    for i in range(5):
        print(i)
    
    while age < 20:
        age += 1
        print(age)
    

五、函数定义

def greet(name):
    print("Hello,", name)

greet("Bob")

六、模块和包

  1. 导入模块

    import math
    print(math.sqrt(16))
    
  2. 自定义模块
    新建一个 my_module.py 文件:

    def say_hi():
        print("Hi!")
    

    在主程序中导入:

    import my_module
    my_module.say_hi()
    

七、文件操作

with open("test.txt", "w") as f:
    f.write("Hello, file!")

八、异常处理

try:
    x = 1 / 0
except ZeroDivisionError:
    print("不能除以0")
finally:
    print("结束")

九、常用第三方库

  • requests:HTTP请求
  • numpy:科学计算
  • pandas:数据分析
  • matplotlib:绘图

安装方法(命令行):

pip install requests numpy pandas matplotlib

十、面向对象编程(OOP)

Python是一门支持面向对象的语言,掌握OOP能让你的代码更易扩展和维护。

类与对象示例:

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} makes a sound.")

class Dog(Animal):
    def speak(self):
        print(f"{self.name} says woof!")

dog = Dog("Buddy")
dog.speak()  # 输出:Buddy says woof!

十一、装饰器与生成器

装饰器可以对函数进行增强,常用于日志、权限控制等场景。

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Before function")
        result = func(*args, **kwargs)
        print("After function")
        return result
    return wrapper

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

say_hello()

生成器可以实现惰性计算,节省内存。

def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

for num in fibonacci(10):
    print(num)

十二、文件与数据处理

  • 处理CSV文件

    import csv
    with open('data.csv', newline='') as f:
        reader = csv.reader(f)
        for row in reader:
            print(row)
    
  • JSON数据读写

    import json
    data = {'name': 'Tom', 'age': 20}
    with open('data.json', 'w') as f:
        json.dump(data, f)
    

十三、异常和日志管理

  • 自定义异常

    class MyError(Exception):
        pass
    
    try:
        raise MyError("Something went wrong!")
    except MyError as e:
        print(e)
    
  • 日志记录

    import logging
    logging.basicConfig(level=logging.INFO)
    logging.info("This is an info message.")
    

十四、常用标准库与第三方库

  • 标准库: os、sys、datetime、collections、re(正则表达式)
  • 第三方库: requests(网络)、pandas(数据分析)、matplotlib(可视化)、flask/django(Web开发)

举例:网络请求

import requests
response = requests.get('https://api.github.com')
print(response.status_code)
print(response.json())

十五、单元测试

编写测试用例保证代码质量。

import unittest

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)

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

十六、包管理与虚拟环境

  • 虚拟环境

    python -m venv venv
    source venv/bin/activate  # Linux/macOS
    venv\Scripts\activate     # Windows
    
  • 依赖管理
    使用 requirements.txt 文件

    pip freeze > requirements.txt
    pip install -r requirements.txt
    

十七、并发与异步编程

  • 多线程、多进程

    import threading
    
    def worker():
        print("Worker")
    
    t = threading.Thread(target=worker)
    t.start()
    t.join()
    
  • 异步编程

    import asyncio
    
    async def main():
        print("Hello")
        await asyncio.sleep(1)
        print("World")
    
    asyncio.run(main())
    

十八、Web开发与自动化

  • Web开发
    Flask、Django等框架

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "Hello, Flask!"
    
    if __name__ == '__main__':
        app.run()
    
  • 自动化脚本
    Selenium、PyAutoGUI等库


十九、代码风格与最佳实践

  • 遵循 PEP8 代码规范
  • 合理命名、模块化、注释
  • 使用类型注解(Type Hint)
def add(a: int, b: int) -> int:
    return a + b

二十. 网络编程基础

网络编程的核心是“数据在网络上传输”,主要涉及客户端服务器两端的通信。Python标准库 socket 提供了底层网络通信的能力,第三方库如 requestsaiohttp 提供了更高级的HTTP操作。


二十一. socket模块基础

21.1 什么是socket?

socket是“套接字”,是网络通信的端点。通过socket可以实现TCP、UDP等协议的数据收发。

21.2 TCP通信示例

服务端代码(server.py
import socket

# 创建socket对象,指定协议类型
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8888))  # 绑定地址和端口
server.listen(1)                  # 开始监听

print("服务器启动,等待连接...")
conn, addr = server.accept()      # 等待客户端连接
print(f"连接来自:{addr}")

data = conn.recv(1024)            # 接收数据
print("收到数据:", data.decode())
conn.send(b'Hello, Client!')      # 发送数据

conn.close()
server.close()
客户端代码(client.py
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8888))  # 连接服务器

client.send(b'Hello, Server!')       # 发送数据
data = client.recv(1024)             # 接收数据
print("收到服务器回复:", data.decode())

client.close()

21.3 UDP通信示例

服务端
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 9999))
print("UDP服务器已启动")

while True:
    data, addr = server.recvfrom(1024)
    print(f"收到来自{addr}的数据:{data.decode()}")
    server.sendto(b'Hello UDP Client!', addr)
客户端
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client.sendto(b'Hello UDP Server!', ('127.0.0.1', 9999))
data, addr = client.recvfrom(1024)
print("收到服务器回复:", data.decode())

二十二. requests库进行HTTP通信

requests 是最常用的HTTP客户端库,适合爬虫、API调用等场景。

22.1 GET请求

import requests

response = requests.get('https://api.github.com')
print(response.status_code)
print(response.text)

22.2 POST请求

import requests

data = {'key': 'value'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.json())

22.3 文件下载

import requests

url = 'https://www.example.com/image.jpg'
resp = requests.get(url)
with open('image.jpg', 'wb') as f:
    f.write(resp.content)

二十三. 简单多线程服务器

服务端可以用多线程同时处理多个客户端连接。

import socket
import threading

def handle_client(conn, addr):
    print(f"连接来自:{addr}")
    conn.send(b'Hello from server!')
    conn.close()

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)
print("多线程服务器启动...")

while True:
    conn, addr = server.accept()
    t = threading.Thread(target=handle_client, args=(conn, addr))
    t.start()

二十四. 网络异常处理

网络编程常见异常如超时、连接失败等,要用try-except捕获:

import socket

try:
    client = socket.socket()
    client.connect(('127.0.0.1', 12345))
except socket.error as e:
    print("连接失败:", e)

二十五. 什么是异步网络编程?

传统的网络通信通常是同步阻塞的:比如发送请求后必须等到响应才能继续执行后续代码。异步编程则允许在等待网络响应时,CPU去处理其他任务,实现高并发、提升资源利用率,尤其适合I/O密集型(如网络、磁盘操作)场景。


二十六. Python异步编程核心:asyncio

Python 3.4+ 标准库引入了 asyncio,它支持协程(coroutine)、事件循环(event loop)等异步机制。
协程是可以暂停和恢复执行的函数,async 定义,await 用于挂起等待。

26.1 基本语法

import asyncio

async def hello():
    print("Hello ...")
    await asyncio.sleep(1)  # 模拟I/O等待
    print("... World!")

# 启动事件循环
asyncio.run(hello())

26.2 并发执行多个协程

import asyncio

async def task(name, delay):
    print(f"Task {name} start")
    await asyncio.sleep(delay)
    print(f"Task {name} end")

async def main():
    await asyncio.gather(
        task('A', 2),
        task('B', 1),
        task('C', 3)
    )

asyncio.run(main())

输出顺序会体现并发特性。


二十八. asyncio实现异步网络通信

28.1 异步TCP服务器

import asyncio

async def handle_client(reader, writer):
    addr = writer.get_extra_info('peername')
    print(f"连接来自:{addr}")
    data = await reader.read(100)
    message = data.decode()
    print(f"收到:{message}")
    writer.write(b"Hello, Client!")
    await writer.drain()
    writer.close()

async def main():
    server = await asyncio.start_server(handle_client, '127.0.0.1', 8888)
    async with server:
        await server.serve_forever()

asyncio.run(main())

18.2 异步TCP客户端

import asyncio

async def tcp_client():
    reader, writer = await asyncio.open_connection('127.0.0.1', 8888)
    writer.write(b'Hello, Server!')
    await writer.drain()
    data = await reader.read(100)
    print(f"收到服务器回复:{data.decode()}")
    writer.close()

asyncio.run(tcp_client())

二十九. aiohttp:异步HTTP客户端与服务器

aiohttp 是基于 asyncio 的异步HTTP库,适合高并发爬虫、API调用、Web服务等。

29.1 aiohttp异步HTTP客户端

import aiohttp
import asyncio

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            text = await resp.text()
            print(f"响应长度:{len(text)}")

asyncio.run(fetch('https://www.example.com'))

29.2 aiohttp异步HTTP服务器

from aiohttp import web

async def handle(request):
    return web.Response(text="Hello, aiohttp!")

app = web.Application()
app.add_routes([web.get('/', handle)])

if __name__ == '__main__':
    web.run_app(app, port=8080)

三十. 实际应用场景

  • 高并发爬虫:同时抓取成百上千网页
  • 即时聊天/推送服务:如IM、WebSocket
  • 高性能API服务器:处理大量并发请求
  • 实时数据采集:如物联网设备数据上传

三十一. 注意事项与进阶

  • 异步编程适合I/O密集型,不适合CPU密集型(如大规模运算)。
  • 第三方库需支持异步(如数据库驱动、HTTP库等)。
  • 常用asyncio工具asyncio.gatherasyncio.create_taskasyncio.wait
  • 异常处理:协程内部建议使用try-except捕获异常。

三十二. 综合案例:异步并发爬取网页

import aiohttp
import asyncio

urls = [
    'https://www.example.com',
    'https://www.python.org',
    'https://www.openai.com',
    # 其他网址
]

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            print(f"{url}: {resp.status}")

async def main():
    tasks = [fetch(url) for url in urls]
    await asyncio.gather(*tasks)

asyncio.run(main())

上述代码会并发请求所有网址,大大提升效率。

创作不易,点点关注!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐