Python就像日常说话一样简洁易懂,一行代码就能实现强大的功能,让你摆脱“入门即放弃”的困境。无论你是零基础小白,还是想转行进阶,无论你想做数据分析、Web开发,还是人工智能,Python都是你最好的起点。接下来,就让我们一起踏上Python学习之旅,从初识Python、使用解释器,到掌握基础语法、数据结构,再到运用模块、面向对象编程,每一步都有详细讲解和带注释的实例,跟着学、跟着练,你很快就能解锁编程技能,用代码实现自己的小想法,开启属于你的人工智能新篇章。本文共有9个章节,逐一学习:
1、 Python 初识(introduction)
首先通过如下代码对Python感性认知,和一般编程语言学习一样,最经典的输出"Hello Python!"
# 这是Python最经典的入门示例,打印"Hello, Python!"# print()是Python内置函数,用于输出内容到控制台print("Hello, Python!") # 输出:Hello, Python!# Python可以直接进行数学运算,无需复杂的语法# 计算100以内的奇数和:1+3+5+...+99total = 0 # 定义变量total,初始值为0,用于存储累加和for i in range(1, 100, 2): # range(1,100,2)生成1到99的奇数序列 total += i # 累加每个奇数到total中print("1到99的奇数和为:", total) # 输出:1到99的奇数和为:2500# Python处理字符串的便捷性message = "Python 简单又强大" # 定义字符串变量print(message.upper()) # upper()方法将字符串转为大写,输出:PYTHON 简单又强大print(message.replace("强大", "优雅")) # 替换字符串内容,输出:Python 简单又优雅
2、使用 Python 解释器(Interpreter)
解释器的使用方式:
- 交互式解释器(终端输入
python/python3进入); - Python 版本查看(
python --version);
# ==================== 1. 交互式解释器操作 ====================# 终端输入python/python3进入交互式环境,直接执行以下代码:# >>> 1 + 2 # 回车后直接输出3# >>> print("交互式解释器") # 输出:交互式解释器# >>> exit() # 退出交互式解释器# ==================== 2. 脚本文件执行 ====================# 将以下代码保存为interpreter_demo.py,终端执行:python interpreter_demo.py# 查看Python版本(代码中获取版本)import sys # 导入系统模块print("Python版本:", sys.version) # 输出当前Python版本,如3.10.12# 单行注释(以#开头)"""多行注释(三个双引号/单引号包裹)这是多行注释的示例"""# 执行脚本时的参数(可选)if __name__ == "__main__": # 脚本作为主程序执行时才触发 print("这是一个Python脚本文件") # 输出:这是一个Python脚本文件
基础语法包括:
- 简单输入输出(input ()/print ());
# ==================== 1. 变量与数据类型 ====================# 变量:无需声明类型,直接赋值即可age = 25 # 整数(int)height = 1.75 # 浮点数(float)name = "张三" # 字符串(str)is_student = False # 布尔值(bool)# 打印变量类型print("age的类型:", type(age)) # 输出:<class 'int'>print("name的类型:", type(name)) # 输出:<class 'str'># ==================== 2. 基本运算符 ====================# 算术运算符a = 10b = 3print("加法:", a + b) # 13print("减法:", a - b) # 7print("乘法:", a * b) # 30print("除法:", a / b) # 3.333...print("取整:", a // b) # 3print("取余:", a % b) # 1print("幂运算:", a **2) # 100# 比较运算符print("是否相等:", a == b) # Falseprint("是否大于:", a > b) # True# 逻辑运算符print("逻辑与:", (a > 5) and (b < 5)) # Trueprint("逻辑或:", (a < 5) or (b < 5)) # Trueprint("逻辑非:", not is_student) # True# ==================== 3. 输入输出 ====================# 获取用户输入(input返回的是字符串,需手动转换类型)user_age = input("请输入你的年龄:") # 提示用户输入user_age = int(user_age) # 转换为整数print(f"你的年龄是{user_age},明年是{user_age + 1}岁") # f-string格式化输出# ==================== 4. 缩进(Python核心) ====================# 缩进用4个空格(或1个Tab),区分代码块if a > b: print("a大于b") # 缩进的代码属于if语句块 print("这行也在if块内")print("这行不在if块内") # 无缩进,不属于if块
4、 Python分支和循环结构(Control Flow)
分支和循环结构包括:
- 循环控制(break、continue、pass);
# ==================== 1. 条件语句 ====================score = 85if score >= 90: # 第一个条件 print("优秀")elif score >= 80: # 第二个条件(可选多个elif) print("良好")elif score >= 60: # 第三个条件 print("及格")else: # 所有条件不满足时执行 print("不及格") # 输出:良好# 三元运算符(简化if-else)result = "及格" if score >= 60 else "不及格"print("三元运算结果:", result) # 输出:及格# ==================== 2. for循环 ====================# 遍历列表fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits: # 遍历每个元素 print(f"当前水果:{fruit}") # 依次输出苹果、香蕉、橙子# 遍历数字序列(range)for i in range(1, 5): # 1,2,3,4(左闭右开) print("循环次数:", i)# ==================== 3. while循环 ====================count = 0while count < 3: # 条件为True时循环 print("while循环:", count) # 输出0、1、2 count += 1 # 计数器自增,避免死循环# ==================== 4. 循环控制 ====================for i in range(1, 6): if i == 3: continue # 跳过当前循环,继续下一次 if i == 5: break # 终止整个循环 print("控制循环:", i) # 输出1、2、4# pass:占位符,无实际操作if score > 80: pass # 暂未实现逻辑,避免语法错误
5、内置数据结构(Data Structures)
核心数据结构包括:
- 字典(Dictionary):键值对、无序、键唯一;
# ==================== 1. 列表(List) ====================# 定义列表nums = [1, 2, 3, 4, 5]fruits = ["苹果", "香蕉", "橙子"]# 访问元素(索引从0开始)print("列表第一个元素:", fruits[0]) # 苹果print("列表切片:", nums[1:3]) # [2,3](左闭右开)# 修改元素(可变)fruits[1] = "葡萄"print("修改后列表:", fruits) # ['苹果', '葡萄', '橙子']# 常用方法fruits.append("西瓜") # 末尾添加fruits.insert(1, "草莓") # 指定位置插入fruits.remove("橙子") # 删除指定元素print("列表长度:", len(fruits)) # 4# ==================== 2. 元组(Tuple) ====================# 定义元组(不可变,用()或直接逗号分隔)person = ("张三", 25, 1.75)print("元组元素:", person[0]) # 张三# 元组不可修改,以下代码会报错:# person[1] = 26 # TypeError: 'tuple' object does not support item assignment# ==================== 3. 字典(Dictionary) ====================# 定义字典(键值对,键唯一)student = { "name": "李四", "age": 20, "gender": "男"}# 访问值print("学生姓名:", student["name"]) # 李四print("学生年龄:", student.get("age")) # 20(推荐,键不存在时返回None)# 修改/添加键值对student["age"] = 21 # 修改student["score"] = 90 # 添加print("修改后字典:", student)# ==================== 4. 集合(Set) ====================# 定义集合(无重复元素)s1 = {1, 2, 3, 3, 4}print("去重后的集合:", s1) # {1,2,3,4}# 集合操作s2 = {3, 4, 5, 6}print("交集:", s1 & s2) # {3,4}print("并集:", s1 | s2) # {1,2,3,4,5,6}print("差集:", s1 - s2) # {1,2}# 添加元素s1.add(5)print("添加后集合:", s1) # {1,2,3,4,5}
6、模块(Modules)
Python 的模块系统,是代码复用的核心,包括:
- 模块的导入(import、from...import、import...as);
# my_module.py - 自定义模块# 定义模块级变量MODULE_NAME = "我的第一个模块"# 定义公共函数def add(a, b): """加法函数""" return a + bdef subtract(a, b): """减法函数""" return a - b# 定义私有函数(以_开头,外部不建议直接使用)def _private_func(): print("这是私有函数")# 模块执行时的初始化代码if __name__ == "__main__": # 仅当直接运行该模块时执行 print("直接运行my_module.py") print("1+2=", add(1, 2))
7、输入与输出(Input and Output)
Python 的 I/O 操作,包括:
控制台输入输出(input ()/print () 的高级用法);
字符串格式化(%、format ()、f-string);
文件读写(open () 函数、with 语句);
文本文件 / 二进制文件操作;
文件的常用模式(r/w/a/r+/w + 等);
# ==================== 1. 控制台输入输出 ====================# print高级用法print("a", "b", "c", sep="-") # 分隔符,输出:a-b-cprint("第一行", end="") # 不换行,输出:第一行第二行print("第二行")# 字符串格式化name = "张三"age = 25# 方式1:%格式化(老式)print("姓名:%s,年龄:%d" % (name, age)) # 姓名:张三,年龄:25# 方式2:format()print("姓名:{},年龄:{}".format(name, age)) # 姓名:张三,年龄:25print("姓名:{1},年龄:{0}".format(age, name)) # 按索引# 方式3:f-string(推荐,Python3.6+)print(f"姓名:{name},年龄:{age},明年:{age+1}") # 支持表达式# ==================== 2. 文件读写 ====================# 方式1:手动打开/关闭(易遗漏close,不推荐)f = open("test.txt", "w", encoding="utf-8") # 打开文件,w=写入模式f.write("Hello, Python!\n") # 写入内容f.write(f"姓名:{name},年龄:{age}") # 写入格式化内容f.close() # 必须关闭文件# 方式2:with语句(自动关闭文件,推荐)with open("test.txt", "r", encoding="utf-8") as f: # r=读取模式 content = f.read() # 读取全部内容 print("文件内容:\n", content)# 逐行读取大文件with open("test.txt", "r", encoding="utf-8") as f: for line in f: # 逐行读取,节省内存 print("行内容:", line.strip()) # strip()去除换行符# 追加内容with open("test.txt", "a", encoding="utf-8") as f: # a=追加模式 f.write("\n这是追加的内容")
8、Errors and Exceptions(错误与异常)
异常处理机制,包括:
- 常见异常类型(TypeError、ValueError、IndexError、KeyError 等);
- 异常捕获(try/except/else/finally);
# ==================== 1. 常见异常示例 ====================# 以下代码会触发不同异常(先注释,逐个测试)# print(1 / 0) # ZeroDivisionError:除以零# fruits = ["苹果", "香蕉"]# print(fruits[2]) # IndexError:索引越界# student = {"name": "张三"}# print(student["age"]) # KeyError:键不存在# int("abc") # ValueError:无法转换为整数# ==================== 2. 异常捕获(try-except) ====================try: # 可能触发异常的代码块 num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字:")) result = num1 / num2except ValueError: # 捕获值转换异常 print("错误:请输入有效的数字!")except ZeroDivisionError: # 捕获除以零异常 print("错误:除数不能为零!")except Exception as e: # 捕获所有其他异常(兜底) print(f"未知错误:{e}")else: # 无异常时执行 print(f"{num1} / {num2} = {result}")finally: # 无论是否异常,始终执行(常用于资源释放) print("异常处理流程结束")# ==================== 3. 手动抛出异常 ====================def check_age(age): if age < 0 or age > 150: # 手动抛出ValueError raise ValueError(f"年龄{age}不符合逻辑!") return agetry: check_age(200)except ValueError as e: print("抛出的异常:", e) # 输出:年龄200不符合逻辑!# ==================== 4. 自定义异常 ====================# 定义自定义异常类(继承Exception)class MyCustomError(Exception): """自定义异常类""" def __init__(self, message): self.message = message super().__init__(self.message)# 使用自定义异常try: score = 105 if score > 100: raise MyCustomError(f"分数{score}超出范围!")except MyCustomError as e: print("自定义异常:", e) # 输出:分数105超出范围!
9、Classes(类)
面向对象编程(OOP)核心:
- 实例方法、类方法(@classmethod)、静态方法(@staticmethod);
# ==================== 1. 定义类与实例化 ====================class Person: """人类""" # 类属性(所有实例共享) species = "人类" # 构造方法:初始化实例属性 def __init__(self, name, age): self.name = name # 实例属性 self.age = age # 实例属性 self.__id = 123456 # 私有属性(外部无法直接访问) # 实例方法(第一个参数必须是self) def introduce(self): """自我介绍""" return f"我叫{self.name},今年{self.age}岁" # 类方法(第一个参数是cls,代表类本身) @classmethod def get_species(cls): return f"物种:{cls.species}" # 静态方法(无self/cls参数,与类无关) @staticmethod def is_adult(age): """判断是否成年""" return age >= 18 # 访问私有属性的方法(封装) def get_id(self): return self.__id# 实例化对象p1 = Person("张三", 25)p2 = Person("李四", 17)# 访问实例属性/方法print(p1.introduce()) # 我叫张三,今年25岁print(p2.is_adult(p2.age)) # False(未成年)# 访问类属性/类方法print(Person.species) # 人类print(Person.get_species()) # 物种:人类# 访问私有属性(通过公共方法)print(p1.get_id()) # 123456# ==================== 2. 继承与方法重写 ====================class Student(Person): """学生类(继承Person类)""" def __init__(self, name, age, student_id): # 调用父类构造方法 super().__init__(name, age) self.student_id = student_id # 新增实例属性 # 重写父类方法 def introduce(self): return f"我叫{self.name},学号{self.student_id},今年{self.age}岁"# 实例化子类s1 = Student("王五", 20, "2024001")print(s1.introduce()) # 我叫王五,学号2024001,今年20岁print(s1.is_adult(s1.age)) # True(继承父类的静态方法)