定义与操作

定义与操作

1. 数据类型与变量

  • 1.1 变量的定义

    • 如何使用 = 赋值给变量
    • 变量命名规则与注意事项
  • 1.2 基本数据类型

    • 整数 (int)
    • 浮点数 (float)
    • 字符串 (str)
    • 布尔值 (bool)
1
2
3
4
5
# 示例
age = 25 # 整数
height = 1.75 # 浮点数
name = "Alice" # 字符串
is_student = True # 布尔值

2. 运算符

  • 2.1 算术运算符

    • +, -, *, /, //, %, **
  • 2.2 比较运算符

    • ==, !=, >, <, >=, <=
  • 2.3 逻辑运算符

    • and, or, not
1
2
3
4
5
6
# 示例
a = 10
b = 3
sum_result = a + b # 加法
is_greater = a > b # 比较
logical_result = (a > 5) and (b < 5) # 逻辑运算

3. 数据结构

  • 3.1 列表 (list)

    • 定义与操作
    • 列表的方法:append, insert, remove, pop, sort, reverse
1
2
3
4
# 示例
fruits = ["apple", "banana", "cherry"]
fruits.append("orange") # 添加元素
fruits.remove("banana") # 删除元素
  • 3.2 元组 (tuple)

    • 定义与操作
    • 不可变性
1
2
# 示例
colors = ("red", "green", "blue")
  • 3.3 集合 (set)

    • 定义与操作
    • 集合特点:无重复元素
1
2
# 示例
unique_numbers = {1, 2, 2, 3} # 结果为 {1, 2, 3}
  • 3.4 字典 (dict)

    • 定义与操作
    • 键值对的创建与访问
1
2
3
# 示例
person = {"name": "Alice", "age": 25}
name = person["name"] # 访问值

4. 控制结构

  • 4.1 条件语句

    • if, elif, else
1
2
3
4
5
# 示例
if age >= 18:
print("Adult")
else:
print("Not an adult")
  • 4.2 循环

    • for 循环
    • while 循环
1
2
3
4
5
6
7
8
# 示例
for i in range(5):
print(i) # 输出 0 到 4

count = 0
while count < 5:
print(count)
count += 1 # 输出 0 到 4

5. 函数

  • 5.1 定义函数

    • 使用 def 关键字
    • 参数与返回值
1
2
3
4
5
# 示例
def greet(name):
return f"Hello, {name}!"

message = greet("Alice") # 调用函数
  • 5.2 函数参数

    • 位置参数、关键字参数、默认参数
1
2
3
4
def power(base, exponent=2):
return base ** exponent

result = power(3) # 使用默认参数

6. 异常处理

  • 6.1 try…except 语句

    • 捕获与处理异常
1
2
3
4
5
# 示例
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero.")

7. 模块与包

  • 7.1 导入模块

    • 使用 import 关键字
1
2
import math
print(math.sqrt(16)) # 使用数学模块
  • 7.2 创建自定义模块

1
2
3
4
5
6
7
# my_module.py
def add(a, b):
return a + b

# 主程序中导入
import my_module
result = my_module.add(5, 3)

8. 文件操作

  • 8.1 读取文件

    • 使用 open 函数
1
2
3
4
# 示例
with open("example.txt", "r") as file:
content = file.read()
print(content)
  • 8.2 写入文件

    • 使用 write 方法
1
2
3
# 示例
with open("example.txt", "w") as file:
file.write("Hello, World!")

9. 结语

  • 9.1 学习建议

    • 多实践,多调试
    • 参考在线资源与社区
  • 9.2 下一步

    • 深入学习面向对象编程(OOP)
    • 探索常用的 Python 库(如 requests, pandas, numpy
使用 `threading` 模块管理线程

使用 `threading` 模块管理线程

在 Python 中,threading 模块提供了一个更加面向对象的方式来创建和管理线程。掌握 threading 模块的使用可以帮助你编写出并发执行的程序,从而更有效地利用计算机资源。

1. 线程的基本概念

1.1 什么是线程?

线程是程序执行的基本单位,轻量级,能够独立调度和执行。多线程可以让程序同时运行多个任务。

1.2 为什么使用多线程?

  • 性能提升:可以在 I/O 密集型的任务中显著提高程序的执行效率。
  • 资源共享:线程共享进程的内存和资源,减少了开销。

2. 创建线程

2.1 使用 Thread 类创建线程

threading 模块中的 Thread 类是创建和管理线程的基本工具。你可以通过输入一个可调用对象(如函数)来启动线程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import threading
import time

def worker(): # 定义线程要执行的目标函数
print("线程开始")
time.sleep(2)
print("线程结束")

# 创建线程
thread = threading.Thread(target=worker)
# 启动线程
thread.start()
# 等待线程完成
thread.join()

print("主线程结束")

代码讲解:

  • worker 函数是线程要执行的任务。
  • target=worker 将该函数传递给线程。
  • thread.start() 启动线程,触发 worker 函数的执行。
  • thread.join() 等待线程执行完成。

3. 使用 Thread 子类

你也可以通过继承 Thread 类,自定义线程的行为。

1
2
3
4
5
6
7
8
9
10
11
12
class MyThread(threading.Thread):
def run(self): # 重写 run 方法
print("线程开始")
time.sleep(2)
print("线程结束")

# 创建并启动线程
my_thread = MyThread()
my_thread.start()
my_thread.join()

print("主线程结束")

代码讲解:

  • 通过重写 run 方法,定义线程执行的任务。
  • 其他部分与之前相同。

4. 线程同步

在多线程编程中,若多个线程同时访问共享数据,可能会导致数据不一致的情况。需要使用锁(Lock)来进行线程同步。

4.1 使用 Lock

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import threading

lock = threading.Lock()
counter = 0

def increment():
global counter
for _ in range(100000): # 重复100000次
lock.acquire() # 获取锁
counter += 1
lock.release() # 释放锁

threads = []
for _ in range(10): # 创建10个线程
thread = threading.Thread(target=increment)
threads.append(thread)
thread.start()

for thread in threads:
thread.join() # 等待所有线程完成

print("最终计数值:", counter)

代码讲解:

  • 使用 Lock 控制对共享变量 counter 的访问。
  • acquire() 方法在使用共享资源前获取锁,而 release() 方法在完成访问后释放锁。
  • 确保在共享资源的读写时,只有一个线程可以进入临界区,从而避免数据竞争。

5. 使用 Condition

如果你需要某个线程在其他线程满足特定条件后再运行,可以使用 Condition

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import threading
import time

condition = threading.Condition()
data = []

def consumer():
with condition:
while not data: # 数据为空
print("消费者等待数据")
condition.wait() # 等待条件
print("消费数据:", data.pop(0))

def producer():
global data
time.sleep(2) # 模拟数据生产
with condition:
data.append("数据")
print("生产数据")
condition.notify() # 通知消费者

t1 = threading.Thread(target=consumer)
t2 = threading.Thread(target=producer)

t1.start()
t2.start()

t1.join()
t2.join()

print("主线程结束")

代码讲解:

  • Condition 让消费者在数据为空时等待生产者的通知。
  • condition.wait() 让线程等待,condition.notify() 通知等待的线程继续执行。

6. 线程的生命周期

  • 创建(New):线程对象被创建,但是尚未开始执行。
  • 就绪(Runnable):线程被启动,并准备好执行。
  • 执行(Running):线程正在执行其任务。
  • 终止(Terminated):线程执行完成。

理解线程的生命周期有助于你更好地管理和调试线程。

7. 总结

使用 threading 模块,可以轻松地创建和管理多个线程,但在多线程编程中也需注意线程安全和资源竞争问题。通过使用锁、条件等工具,可以有效地管理线程之间的协作与同步。

在实际应用场景中,多线程常用于处理 I/O 密集型的任务,如网络请求、文件操作等,以提高程序的响应性和执行效率。在 CPU 密集型任务中,考虑使用多进程(如 multiprocessing 模块)可能更为合适。

27 从零开始学习 Python 小白教程 - 常用方法小节列表

27 从零开始学习 Python 小白教程 - 常用方法小节列表

1. Python 基础知识

  • 什么是 Python?
  • 安装 Python
  • Python 的基本语法
  • 数据类型
    • int
    • float
    • str
    • list
    • tuple
    • dict
    • set

2. 控制结构

  • 条件语句
    • if 语句
    • elifelse 语句
  • 循环
    • for 循环
    • while 循环
    • breakcontinue

3. 函数

  • 定义函数
    • 使用 def 关键字
      1
      2
      def greet(name):
      return f"Hello, {name}!"
  • 参数与返回值
  • 匿名函数
    • 使用 lambda 表达式

4. 数据结构

  • 列表操作
    • 添加元素:append(), insert()
    • 删除元素:remove(), pop()
    • 排序:sort(), sorted()
  • 字典操作
    • 访问元素:dict[key]
    • 添加和删除键值对
  • 集合操作
    • add(), remove(), union(), intersection()

5. 字符串处理

  • 常用字符串方法
    • len()
    • str.lower(), str.upper()
    • str.split(), str.join()
    • 字符串格式化
  • 正则表达式
    • 使用 re 模块
      1
      2
      3
      import re
      pattern = r'\d+'
      result = re.findall(pattern, 'There are 123 apples and 456 oranges.')

6. 文件操作

  • 读取文件
    1
    2
    with open('example.txt', 'r') as file:
    content = file.read()
  • 写入文件
    1
    2
    with open('example.txt', 'w') as file:
    file.write('Hello, World!')

7. 错误和异常处理

  • 使用 try/except 块
    1
    2
    3
    4
    try:
    result = 10 / 0
    except ZeroDivisionError:
    print("Cannot divide by zero!")

8. 模块与包

  • 导入模块
    • 使用 import
    • 使用 from ... import ...
  • 创建自定义模块
    • 如何创建 my_module.py

9. 面向对象编程

  • 定义类
    1
    2
    3
    class Dog:
    def __init__(self, name):
    self.name = name
  • 实例化对象
  • 继承与多态

10. 常用库介绍

  • NumPy:处理数组和矩阵的库
  • Pandas:数据分析和处理
  • Matplotlib:绘图库
  • Requests:处理 HTTP 请求

11. 小项目实战

  • 图书管理系统
  • 天气预报抓取
  • Todo List 应用

以上小节列表旨在让小白用户快速掌握 Python 的常用方法和知识点。可以根据兴趣逐步深入学习每一部分。