Python 编程快速入门
目录
1. Python 简介
Python 是一种高级、解释型、通用的编程语言,由 Guido van Rossum 于 1991 年发布。
特点
- 跨平台: 支持 Windows、macOS、Linux 等
- 多用途: Web 开发、数据分析、人工智能、自动化脚本等
应用场景
- 数据科学与机器学习 (NumPy, Pandas, TensorFlow)
2. 环境安装与配置
安装 Python
- 安装时勾选 "Add Python to PATH"
python --version# 或python3 --version
推荐使用 IDE/编辑器
创建虚拟环境
# 创建虚拟环境python -m venv myenv# Windows 激活myenv\Scripts\activate# macOS/Linux 激活source myenv/bin/activate# 退出虚拟环境deactivate
3. 第一个 Python 程序
Hello World
print("Hello, World!")
运行方式
方式一: 交互式解释器
python>>> print("Hello, World!")
方式二: 脚本文件
# 创建 hello.pypython hello.py
4. 基础语法
变量与赋值
# 变量不需要声明类型name = "Python"version = 3.12is_awesome = True# 多重赋值x, y, z = 1, 2, 3a = b = c = 0
注释
# 这是单行注释"""这是多行注释可以写多行"""# 文档字符串 (docstring)defgreet():"""这是一个函数的文档字符串"""pass
基本输入输出
# 输出print("Hello")print("Name:", name, "Version:", version)print(f"Python {version} is awesome!") # f-string (推荐)# 输入user_input = input("请输入你的名字: ")print(f"你好, {user_input}!")
运算符
# 算术运算符a = 10 + 3# 加法: 13b = 10 - 3# 减法: 7c = 10 * 3# 乘法: 30d = 10 / 3# 除法: 3.333...e = 10 // 3# 整除: 3f = 10 % 3# 取余: 1g = 10 ** 3# 幂: 1000# 比较运算符== 等于, != 不等于, > 大于, < 小于, >= 大于等于, <= 小于等于# 逻辑运算符and 与, or 或, not 非# 赋值运算符=, +=, -=, *=, /=, //=, %=, **=
5. 数据类型
数字类型
# 整数age = 25# 浮点数price = 19.99# 复数z = 3 + 4j# 类型转换int("123") # 123float("3.14") # 3.14str(100) # "100"
字符串
# 创建字符串s1 = '单引号's2 = "双引号"s3 = """多行字符串"""# 常用操作text = "Hello, Python!"len(text) # 长度: 14text.upper() # 大写: "HELLO, PYTHON!"text.lower() # 小写: "hello, python!"text.split(",") # 分割: ["Hello", " Python!"]text.replace("Python", "World") # 替换text.find("Python") # 查找索引: 7text.strip() # 去除两端空白# 字符串格式化name = "Alice"age = 30print(f"我叫{name},今年{age}岁") # f-string (Python 3.6+)print("我叫{},今年{}岁".format(name, age))
列表 (List)
# 创建列表fruits = ["apple", "banana", "orange"]numbers = [1, 2, 3, 4, 5]mixed = [1, "hello", True, 3.14]# 访问元素fruits[0] # "apple"fruits[-1] # "orange" (最后一个)# 切片numbers[1:3] # [2, 3]numbers[:3] # [1, 2, 3]numbers[2:] # [3, 4, 5]numbers[::-1] # [5, 4, 3, 2, 1] (反转)# 常用方法fruits.append("grape") # 添加元素fruits.insert(1, "mango") # 插入元素fruits.remove("banana") # 删除元素fruits.pop() # 删除并返回最后一个fruits.sort() # 排序len(fruits) # 长度# 列表推导式squares = [x**2for x in range(10)]evens = [x for x in range(20) if x % 2 == 0]
元组 (Tuple)
# 创建元组 (不可变列表)point = (3, 4)colors = ("red", "green", "blue")# 访问point[0] # 3# 解包x, y = pointprint(f"x={x}, y={y}")
字典 (Dictionary)
# 创建字典person = {"name": "Alice","age": 30,"city": "Beijing"}# 访问person["name"] # "Alice"person.get("age") # 30person.get("phone", "N/A") # "N/A" (默认值)# 修改和添加person["age"] = 31person["phone"] = "123456"# 常用方法person.keys() # 所有键person.values() # 所有值person.items() # 所有键值对person.pop("city") # 删除并返回值# 字典推导式squares = {x: x**2for x in range(5)}# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
集合 (Set)
# 创建集合 (无序不重复)fruits = {"apple", "banana", "orange"}numbers = set([1, 2, 3, 3, 4]) # {1, 2, 3, 4}# 常用操作fruits.add("grape")fruits.remove("banana")fruits.discard("xxx") # 删除 (不存在不报错)# 集合运算a = {1, 2, 3}b = {3, 4, 5}a | b # 并集: {1, 2, 3, 4, 5}a & b # 交集: {3}a - b # 差集: {1, 2}a ^ b # 对称差集: {1, 2, 4, 5}
布尔值
is_active = Trueis_deleted = False# 假值: False, None, 0, "", [], {}, set()# 真值: 其他所有值
6. 控制流
条件语句
age = 18if age < 18: print("未成年")elif age == 18: print("刚成年")else: print("成年人")# 三元表达式status = "成年"if age >= 18else"未成年"
for 循环
# 遍历列表fruits = ["apple", "banana", "orange"]for fruit in fruits: print(fruit)# 使用 rangefor i in range(5): # 0, 1, 2, 3, 4 print(i)for i in range(2, 10, 2): # 2, 4, 6, 8 print(i)# 枚举for index, value in enumerate(fruits): print(f"{index}: {value}")# 遍历字典person = {"name": "Alice", "age": 30}for key, value in person.items(): print(f"{key}: {value}")
while 循环
count = 0while count < 5: print(count) count += 1# break 和 continuefor i in range(10):if i == 3:continue# 跳过本次循环if i == 7:break# 退出循环 print(i)
异常处理中的 else 和 finally
for i in range(5): print(i)else: print("循环正常结束") # 没有 break 时执行
7. 函数
定义函数
defgreet(name):"""向用户打招呼"""returnf"Hello, {name}!"# 调用message = greet("Alice")print(message)
参数类型
# 位置参数defadd(a, b):return a + b# 默认参数defgreet(name, greeting="Hello"):returnf"{greeting}, {name}!"# 关键字参数result = add(b=5, a=3)# 可变参数defsum_all(*args):return sum(args)sum_all(1, 2, 3, 4) # 10# 关键字可变参数defprint_info(**kwargs):for key, value in kwargs.items(): print(f"{key}: {value}")print_info(name="Alice", age=30)
Lambda 函数
# 匿名函数square = lambda x: x ** 2square(5) # 25# 配合高阶函数使用numbers = [3, 1, 4, 1, 5, 9]sorted(numbers, key=lambda x: -x)list(map(lambda x: x * 2, numbers))list(filter(lambda x: x > 3, numbers))
作用域
x = "global"defouter(): x = "enclosing"definner():nonlocal x x = "modified" inner() print(x) # "modified"
8. 模块与包
导入模块
# 导入整个模块import mathprint(math.pi)# 导入特定内容from datetime import datetime, dateprint(datetime.now())# 导入并重命名import numpy as np
创建模块
# mymodule.pydefgreet(name):returnf"Hello, {name}!"PI = 3.14159# main.pyfrom mymodule import greet, PIprint(greet("Alice"))
常用包管理命令
# 安装包pip install package_name# 卸载包pip uninstall package_name# 查看已安装包pip list# 导出依赖pip freeze > requirements.txt# 安装依赖pip install -r requirements.txt
9. 文件操作
读写文件
# 写入文件with open("test.txt", "w", encoding="utf-8") as f: f.write("Hello, World!\n") f.write("Python 文件操作很简单\n")# 读取文件with open("test.txt", "r", encoding="utf-8") as f: content = f.read() # 读取全部内容# lines = f.readlines() # 读取所有行# line = f.readline() # 读取一行print(content)# 追加模式with open("test.txt", "a", encoding="utf-8") as f: f.write("追加的内容\n")
文件模式
处理 JSON
import json# 写入 JSONdata = {"name": "Alice", "age": 30}with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2)# 读取 JSONwith open("data.json", "r", encoding="utf-8") as f: loaded_data = json.load(f)
10. 异常处理
基本语法
try: result = 10 / 0except ZeroDivisionError as e: print(f"错误: {e}")except (TypeError, ValueError): print("类型或值错误")else: print("没有异常时执行")finally: print("无论是否异常都执行")
常见异常类型
抛出自定义异常
defvalidate_age(age):if age < 0:raise ValueError("年龄不能为负数")returnTruetry: validate_age(-5)except ValueError as e: print(e)
11. 面向对象编程
类和对象
classDog:"""狗类"""# 类属性 species = "Canine"def__init__(self, name, age):"""初始化方法""" self.name = name self.age = agedefbark(self):"""狗叫"""returnf"{self.name} says Woof!"def__str__(self):returnf"{self.name}, {self.age}岁"# 创建对象my_dog = Dog("Buddy", 3)print(my_dog.bark())print(my_dog)
继承
classAnimal:def__init__(self, name): self.name = namedefspeak(self):passclassCat(Animal):def__init__(self, name, color): super().__init__(name) self.color = colordefspeak(self):returnf"{self.name} says Meow!"classDog(Animal):defspeak(self):returnf"{self.name} says Woof!"# 多态animals = [Cat("Kitty", "white"), Dog("Buddy")]for animal in animals: print(animal.speak())
属性装饰器
classPerson:def__init__(self, name, age): self.name = name self._age = age @propertydefage(self):return self._age @age.setterdefage(self, value):if value < 0:raise ValueError("年龄不能为负数") self._age = valuep = Person("Alice", 30)print(p.age) # 30p.age = 31# 使用 setter
12. 常用标准库
os - 操作系统接口
import osos.getcwd() # 当前工作目录os.listdir(".") # 列出目录内容os.mkdir("new_folder") # 创建目录os.path.exists("file.txt") # 检查是否存在os.path.join("dir", "file") # 路径拼接
sys - 系统相关
import syssys.argv # 命令行参数sys.exit() # 退出程序sys.path # 模块搜索路径
datetime - 日期时间
from datetime import datetime, timedeltanow = datetime.now()print(now.strftime("%Y-%m-%d %H:%M:%S"))future = now + timedelta(days=7)
random - 随机数
import randomrandom.randint(1, 10) # 随机整数random.random() # 0-1 随机浮点数random.choice(["a", "b", "c"]) # 随机选择random.sample(range(100), 5) # 随机抽样
collections - 容器数据类型
from collections import Counter, defaultdict, deque# 计数器c = Counter("hello world")print(c.most_common(3))# 默认字典d = defaultdict(list)d["key"].append("value")# 双端队列q = deque([1, 2, 3])q.append(4)q.popleft()
13. 实战练习
练习 1: 猜数字游戏
import randomdefguess_number(): target = random.randint(1, 100) attempts = 0 print("欢迎来到猜数字游戏!") print("我想了一个 1-100 之间的数字。")whileTrue:try: guess = int(input("请输入你的猜测: ")) attempts += 1if guess < target: print("太小了!")elif guess > target: print("太大了!")else: print(f"恭喜! 你用了 {attempts} 次猜对了!")breakexcept ValueError: print("请输入有效的数字!")guess_number()
练习 2: 待办事项管理器
classTodoList:def__init__(self): self.tasks = []defadd_task(self, task): self.tasks.append({"task": task, "done": False}) print(f"已添加: {task}")defcomplete_task(self, index):if0 <= index < len(self.tasks): self.tasks[index]["done"] = True print(f"已完成: {self.tasks[index]['task']}")else: print("无效的索引!")defshow_tasks(self):ifnot self.tasks: print("暂无待办事项")returnfor i, task in enumerate(self.tasks): status = "[x]"if task["done"] else"[ ]" print(f"{i}. {status}{task['task']}")# 使用示例todo = TodoList()todo.add_task("学习 Python")todo.add_task("完成项目")todo.complete_task(0)todo.show_tasks()
练习 3: 简单的文件统计工具
defcount_file_stats(filepath):"""统计文件的行数、单词数和字符数"""try:with open(filepath, "r", encoding="utf-8") as f: content = f.read() lines = content.count("\n") + 1 words = len(content.split()) chars = len(content) print(f"文件: {filepath}") print(f"行数: {lines}") print(f"单词数: {words}") print(f"字符数: {chars}")except FileNotFoundError: print(f"文件不存在: {filepath}")# 使用count_file_stats("test.txt")
祝你学习愉快! Python 是一门非常有趣的语言,多写多练是掌握它的最佳方式。