Python 作为最受欢迎的编程语言之一,因其简洁易读、功能强大的特性,成为新手入门编程的首选。但很多初学者在面对变量、类、函数等基础概念时,常因缺乏系统梳理而困惑。今天,我们用代码示例 + 通俗讲解的方式,帮你快速吃透 10 个 Python 必学概念,让你从 “懂理论” 到 “会实战”。
一、Python 文件:代码的 “容器”
想要运行 Python 代码,首先要创建正确格式的文件 —— 这是所有操作的起点。
核心知识点:
- 文件扩展名必须为.py(如main.py),Python 解释器仅识别此类文件;
- 可在电脑任意位置创建,推荐按项目分类存放(如 “Python 学习 / 基础练习” 文件夹)。
实战操作:
- 在桌面新建文本文件,重命名为first_code.py;
- 打开文件,输入最简单的代码:
# 这是Python的第一个文件
print("Hello, Python!") # 打印内容到控制台
- 打开终端,切换到桌面目录,执行命令:python first_code.py,即可看到输出:Hello, Python!
二、变量:存储数据的 “小盒子”
变量就像一个带标签的盒子,用来存放数字、文本等数据,方便后续反复使用,避免重复输入。
核心知识点:
- 定义格式:变量名 = 赋值内容(等号是 “赋值”,不是 “等于”);
- 变量名规则:只能包含字母、数字、下划线,且不能以数字开头(如age2合法,2age非法);
- 无需声明类型,Python 会自动识别(如name = "Alice"是字符串,age = 20是整数)。
实战代码:
# 定义变量
name = "Alice" # 字符串变量:存储姓名
age = 20 # 整数变量:存储年龄
height = 1.65 # 浮点数变量:存储身高
is_student = True # 布尔值变量:存储是否为学生
# 使用变量
print(f"姓名:{name}") # 格式化输出,结果:姓名:Alice
print(f"年龄:{age}岁") # 结果:年龄:20岁
print(f"身高:{height}米,是否为学生:{is_student}") # 结果:身高:1.65米,是否为学生:True
# 修改变量值
age = 21 # 直接重新赋值,无需重新定义
print(f"一年后年龄:{age}岁") # 结果:一年后年龄:21岁
三、基础数据类型:Python 的 “积木”
数据类型是变量的 “灵魂”,不同类型对应不同的用途(如数字用于计算,文本用于展示)。Python 常用的基础类型有 8 种,重点掌握以下 4 类核心类型:
类型 | 说明 | 示例 |
整数(int) | 无小数的数字,可正可负 | 10、-5、0 |
浮点数(float) | 带小数的数字 | 3.14、-0.5 |
字符串(str) | 文本内容,需用单 / 双引号包裹 | "Python"、'Hello' |
布尔值(bool) | 只有两个值:True(真)、False(假) | True、False |
此外,还有 4 种复合类型,适合存储多个数据:
# 1. 列表(list):可变(可增删元素),用[]包裹
grocery_list = ["苹果", "牛奶", "面包"]
grocery_list.append("鸡蛋") # 新增元素
print("购物清单:", grocery_list) # 结果:购物清单:['苹果', '牛奶', '面包', '鸡蛋']
# 2. 元组(tuple):不可变(不能修改元素),用()包裹
birthday = (2004, 5, 20) # 生日:年、月、日
# birthday[0] = 2005 # 报错!元组不能修改
# 3. 集合(set):无重复元素,用{}包裹,适合去重
duplicate_numbers = [1, 2, 2, 3, 3, 3]
unique_numbers = set(duplicate_numbers)
print("去重后的数字:", unique_numbers) # 结果:去重后的数字:{1, 2, 3}
# 4. 字典(dict):键值对(key:value),用{}包裹,适合存储关联数据
student_info = {"name": "Bob", "age": 19, "major": "计算机"}
print("学生专业:", student_info["major"]) # 结果:学生专业:计算机
四、类型注解:代码的 “交通灯”
Python 是动态类型语言(变量类型可随时变),但大型项目中容易因类型混乱出错。类型注解就是给变量 / 函数 “贴标签”,提醒开发者正确使用类型(非强制约束,仅警告)。
核心知识点:
- 格式:变量名: 类型 = 赋值(如name: str = "Charlie");
- 作用:代码编辑器(如 VS Code)会根据注解提示错误(如给整数变量赋值字符串时报警);
- 类比:像交通灯 —— 不强制你不闯红灯,但会提醒你有危险。
实战代码:
# 变量类型注解
name: str = "Charlie" # 声明name是字符串
age: int = 22 # 声明age是整数
height: float = 1.75 # 声明height是浮点数
# 错误示例:类型不匹配,编辑器会报警(但代码仍能运行)
# age: int = "22" # 警告:将字符串赋值给整数类型的变量
# 函数类型注解(参数+返回值)
def add(a: float, b: float) -> float: # a、b是浮点数,返回值也是浮点数
return a + b
result = add(3.5, 2.5)
print("加法结果:", result) # 结果:加法结果:6.0
# 错误示例:参数类型不匹配,编辑器报警
# wrong_result = add("3.5", 2.5) # 警告:将字符串作为参数传入
五、常量:不能随便改的 “固定值”
Python 没有原生常量(无法强制禁止修改),但开发者约定:用全大写字母命名 + 类型注解Final,表示这是常量(如版本号、圆周率)。
实战代码:
from typing import Final # 导入Final类型
# 定义常量:全大写+Final注解
VERSION: Final[str] = "1.0.0" # 软件版本号
PI: Final[float] = 3.1415926 # 圆周率
print("软件版本:", VERSION) # 结果:软件版本:1.0.0
print("圆周率:", PI) # 结果:圆周率:3.1415926
# 错误示例:修改常量,编辑器会报警
# VERSION: Final[str] = "1.0.1" # 警告:尝试修改Final类型的常量
六、函数:代码的 “复用机器”
如果一段代码需要重复使用(如计算加法、打印日期),每次复制粘贴会导致冗余。函数就是把这段代码 “打包”,需要时直接调用,修改时只需改一处。
核心知识点:
- 定义格式:用def关键字,语法:
- python
- def 函数名(参数1: 类型, 参数2: 类型) -> 返回值类型: 函数体(缩进4个空格) return 返回值(可选)
- 作用:减少冗余、提高代码可维护性。
实战代码:
from datetime import datetime # 导入时间模块
# 1. 无参数、无返回值的函数:打印当前时间
def show_current_time() -> None: # None表示无返回值
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"当前时间:{current_time}")
# 调用函数(可多次调用)
show_current_time() # 结果:当前时间:2024-10-13 15:30:00(随实际时间变化)
show_current_time() # 再次调用,输出最新时间
# 2. 带参数、有返回值的函数:计算两个数的乘积
def multiply(x: float, y: float) -> float:
product = x * y
return product # 返回计算结果
# 调用函数并接收返回值
result = multiply(4, 5)
print("4×5的结果:", result) # 结果:4×5的结果:20.0
# 3. 带默认参数的函数:打招呼(默认称呼为"朋友")
def greet(name: str = "朋友") -> str:
return f"你好,{name}!"
print(greet()) # 未传参数,用默认值:结果:你好,朋友!
print(greet("Lisa")) # 传参数,覆盖默认值:结果:你好,Lisa!
七、类与实例:面向对象的 “蓝图与房子”
Python 是面向对象编程语言,类(Class) 是创建对象的 “蓝图”(如 “汽车图纸”),实例(Instance) 是根据蓝图造出来的 “具体对象”(如 “我的红色宝马车”)。
核心知识点:
- 类的定义:用class关键字,类名首字母大写(如Car);
- 实例的创建:实例名 = 类名(参数)(如my_car = Car("宝马", 2024));
- __init__方法:类的 “初始化函数”,创建实例时自动执行,用于设置实例的属性(如汽车的品牌、年份)。
实战代码:
# 定义类:汽车(蓝图)
class Car:
# 初始化方法:创建实例时自动调用,self必须是第一个参数(代表实例本身)
def __init__(self, brand: str, year: int) -> None:
self.brand = brand # 实例属性:品牌
self.year = year # 实例属性:年份
# 创建实例:根据蓝图造具体的车(房子)
my_car = Car(brand="宝马", year=2024) # 我的宝马车
your_car = Car(brand="特斯拉", year=2023) # 你的特斯拉车
# 使用实例属性
print(f"我的车:{my_car.brand} {my_car.year}款") # 结果:我的车:宝马 2024款
print(f"你的车:{your_car.brand} {your_car.year}款") # 结果:你的车:特斯拉 2023款
八、类的方法:实例的 “技能”
方法是定义在类内部的函数,相当于实例的 “技能”(如汽车的 “驾驶”“鸣笛” 功能)。调用方法时,实例会自动传入self参数,无需手动传。
实战代码:
class Car:
def __init__(self, brand: str, year: int) -> None:
self.brand = brand
self.year = year
# 方法1:无额外参数的方法(驾驶)
def drive(self) -> None:
print(f"{self.brand}正在行驶中...")
# 方法2:带额外参数的方法(鸣笛n次)
def honk(self, times: int) -> None:
for _ in range(times):
print(f"{self.brand}鸣笛:嘀!")
# 创建实例
my_car = Car("宝马", 2024)
# 调用方法
my_car.drive() # 结果:宝马正在行驶中...
my_car.honk(times=3) # 结果:宝马鸣笛:嘀!(重复3次)
九、特殊方法(Dunder Methods):实例的 “隐藏技能”
特殊方法又称 “双下划线方法”(如__str__、__add__),以__开头和结尾,用于自定义实例的默认行为(如打印实例时显示有用信息,而非内存地址)。
常用特殊方法:
- __str__:自定义实例的字符串表示(print(实例)时调用);
- __add__:自定义实例之间的 “加法” 操作(实例1 + 实例2时调用)。
实战代码:
class Car:
def __init__(self, brand: str, year: int) -> None:
self.brand = brand
self.year = year
# 1. 自定义打印实例时的内容
def __str__(self) -> str:
return f"汽车信息:{self.brand} {self.year}款"
# 2. 自定义实例的加法操作
def __add__(self, other: "Car") -> str: # other是另一个Car实例
return f"两辆车:{self.brand} 和 {other.brand}"
# 创建实例
car1 = Car("宝马", 2024)
car2 = Car("特斯拉", 2023)
# 调用__str__方法(print时自动触发)
print(car1) # 结果:汽车信息:宝马 2024款(而非默认的内存地址)
# 调用__add__方法(+号时自动触发)
combined = car1 + car2
print(combined) # 结果:两辆车:宝马 和 特斯拉
十、总结:从入门到进阶的路径
以上 10 个概念是 Python 的 “地基”,掌握它们后,你可以:
- 独立编写简单脚本(如数据处理、自动打印报表);
- 理解更复杂的 Python 项目代码(如开源库、Web 应用);
- 为后续学习框架(如 Django、TensorFlow)打下基础。