学习
2025/6/9大约 5 分钟
学习
从初学者的角度入手,帮助您更好的学习开发SRA所涉及到的Python部分。
先决条件
环境:
- Python 3.11.5
- PyCharm Community Edition 或 Visual Studio Code
- Windows 10 x64及以上版本
- 如果你有更喜欢的配置,可以尝试使用自己的配置。
提示
如果你是初学者,建议使用Visual Studio Code。
如果你考虑长期学习Python,那么PyCharm将是更好的选择
基础
Python 是一种高级编程语言,它的语法简单易懂,易于学习。
变量、数据类型
Python中的变量不需要声明类型,它会根据赋值自动判断类型。Python支持多种数据类型,包括数字(整数、浮点数)、字符串、布尔值等。
# 数字类型
age = 25 # 整数
height = 1.75 # 浮点数
# 字符串类型
name = "小明" # 字符串可以用单引号或双引号
# 布尔类型
is_student = True # 布尔值只有True和False
# 类型转换
str_num = "42"
num = int(str_num) # 字符串转整数
条件语句
条件语句用于根据不同条件执行不同的代码块。Python使用if、elif和else关键字来构建条件语句。
age = 18
if age < 18:
print("未成年")
elif age == 18:
print("刚好成年")
else:
print("已成年")
循环语句
Python提供for和while两种循环语句,用于重复执行代码块。
# for循环
for i in range(5): # 循环5次,i从0到4
print(i)
# while循环
count = 0
while count < 5:
print(count)
count += 1
函数
函数是可重用的代码块,可以接收参数并返回结果。
# 定义函数
def calculate_area(length, width):
"""计算矩形面积的函数"""
return length * width
# 调用函数
area = calculate_area(5, 3)
print(f"面积是:{area}")
# 带默认参数的函数
def greet(name="访客"):
return f"你好,{name}!"
列表、字典、集合、元组
Python提供了多种数据结构来存储和组织数据。
# 列表(可修改)
fruits = ["苹果", "香蕉", "橙子"]
fruits.append("葡萄") # 添加元素
# 字典(键值对)
person = {
"name": "小明",
"age": 18,
"city": "北京"
}
# 集合(不重复元素)
numbers = {1, 2, 3, 3, 4} # 结果是{1, 2, 3, 4}
# 元组(不可修改)
coordinates = (10, 20)
进阶
文件操作
文件操作是程序中常见的任务,Python提供了简单的文件读写接口。
# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:
f.write("这是一个示例文件\n")
# 读取文件
with open("example.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
异常处理
异常处理用于处理程序运行时可能出现的错误。
try:
number = int(input("请输入一个数字:"))
result = 10 / number
print(f"结果是:{result}")
except ValueError:
print("请输入有效的数字!")
except ZeroDivisionError:
print("不能除以零!")
finally:
print("程序执行完毕")
类和对象
面向对象编程是Python的重要特性,通过类可以创建自定义的数据类型。
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"我叫{self.name},今年{self.age}岁"
# 创建对象
student = Student("小明", 18)
print(student.introduce())
继承
继承允许我们创建一个类作为另一个类的基础,继承父类的属性和方法。
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return f"你好,我是{self.name}"
class Teacher(Person):
def __init__(self, name, subject):
super().__init__(name)
self.subject = subject
def teach(self):
return f"我教{self.subject}"
teacher = Teacher("张老师", "数学")
print(teacher.greet()) # 继承自Person的方法
print(teacher.teach()) # Teacher自己的方法
模块和包
模块是Python代码的组织单位,包含了函数、类等定义。包是多个模块的集合。
# 导入模块
import math
print(math.pi) # 使用math模块中的pi常量
# 从模块导入特定函数
from random import randint
random_number = randint(1, 10)
装饰器
装饰器是Python的一个重要特性,用于修改函数或类的行为。
def timer(func):
def wrapper(*args, **kwargs):
import time
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"函数执行时间:{end - start}秒")
return result
return wrapper
@timer
def slow_function():
import time
time.sleep(1)
return "完成"
生成器
生成器是一种特殊的迭代器,可以节省内存空间。
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)
上下文管理器
上下文管理器用于管理资源的分配和释放。
class FileManager:
def __init__(self, filename):
self.filename = filename
def __enter__(self):
self.file = open(self.filename, 'w')
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
# 使用上下文管理器
with FileManager('test.txt') as f:
f.write('Hello, World!')
多线程和多进程
Python提供了多线程和多进程的支持,用于并发编程。
import threading
import time
def worker(name):
print(f"线程{name}开始工作")
time.sleep(2)
print(f"线程{name}完成工作")
# 创建并启动多个线程
threads = []
for i in range(3):
t = threading.Thread(target=worker, args=(f"Thread-{i}",))
threads.append(t)
t.start()
# 等待所有线程完成
for t in threads:
t.join()
异步编程
Python的asyncio库提供了异步编程的支持。
import asyncio
async def async_task(name):
print(f"任务{name}开始")
await asyncio.sleep(1)
print(f"任务{name}完成")
async def main():
tasks = [async_task(f"Task-{i}") for i in range(3)]
await asyncio.gather(*tasks)
# 运行异步程序
asyncio.run(main())
单元测试
Python的unittest模块提供了单元测试框架。
import unittest
class Calculator:
def add(self, a, b):
return a + b
class TestCalculator(unittest.TestCase):
def setUp(self):
self.calc = Calculator()
def test_add(self):
result = self.calc.add(3, 5)
self.assertEqual(result, 8)
if __name__ == '__main__':
unittest.main()
文档字符串和类型提示
Python支持文档字符串和类型提示,提高代码的可读性和可维护性。
from typing import List, Dict
def calculate_average(numbers: List[float]) -> float:
"""计算数字列表的平均值
Args:
numbers: 包含数字的列表
Returns:
列表中所有数字的平均值
Raises:
ValueError: 如果列表为空
"""
if not numbers:
raise ValueError("列表不能为空")
return sum(numbers) / len(numbers)
# 使用类型提示的字典
def process_user_data(data: Dict[str, str]) -> None:
"""处理用户数据
Args:
data: 包含用户信息的字典
"""
for key, value in data.items():
print(f"{key}: {value}")