Python基础知识点合集——全网最细、最全!
引言
Python 作为一门简洁、高效、跨平台的高级编程语言,凭借其“代码即文档”的特性和丰富的第三方库,成为了数据分析、人工智能、Web开发、自动化运维等领域的首选语言。本文将从零基础出发,系统性梳理 Python 核心基础知识点,覆盖环境搭建、语法规则、数据类型、流程控制、函数、面向对象等全维度内容,帮助初学者快速构建知识体系。
一、Python 环境搭建与入门
1.1 安装 Python
- 官网下载:访问 Python 官网,根据系统(Windows/macOS/Linux)下载对应版本(建议选择 3.7+ 以上稳定版)。
- 验证安装:安装完成后,打开终端(Windows用CMD/PowerShell,macOS/Linux用Terminal),输入
python --version
或python3 --version
,若输出版本号(如Python 3.11.3
)则安装成功。
1.2 开发工具选择
- 新手友好型:
- IDLE:Python 自带的轻量级集成开发环境(适合写小脚本)。
- VS Code:微软开源编辑器,安装 Python 插件后支持代码高亮、调试、自动补全(推荐)。
- PyCharm:JetBrains 出品的专业 IDE,社区版免费(适合项目开发)。
1.3 第一个 Python 程序
在任意编辑器中输入以下代码,保存为 hello.py
,通过终端运行 python hello.py
:
# 这是一行注释(用 # 开头)
print("Hello, Python!") # 输出语句
输出结果:
Hello, Python!
二、变量与数据类型
2.1 变量的本质与命名规则
- 变量:内存中存储数据的“容器”,通过变量名访问数据。
- 命名规则:
- 只能包含字母、数字、下划线(
_
),且不能以数字开头(如age_1
合法,1_age
不合法)。 - 区分大小写(
Name
和name
是不同变量)。 - 不能使用 Python 关键字(如
if
、for
、def
等,可用help('keywords')
查看所有关键字)。 - 建议遵循小写+下划线命名法(如
user_name
),类名用大驼峰(如StudentInfo
)。
- 只能包含字母、数字、下划线(
2.2 基础数据类型
Python 内置 6 种基础数据类型,可通过 type()
函数查看变量类型。
类型 | 描述 | 示例 |
---|---|---|
整数(int) | 无小数部分的数字,支持任意大整数(无溢出问题) | 5 , -3 , 0 , 1000 |
浮点数(float) | 带小数部分的数字,本质是双精度浮点数(可能存在精度误差) | 3.14 , -2.5 , 0.0 |
布尔值(bool) | 逻辑值,仅 True (真)或 False (假) | True , False |
字符串(str) | 用单引号(' ' )、双引号(" " )或三引号(''' ''' /""" """ )包裹的文本 | 'hello' , "Python" , '''多行文本''' |
空值(None) | 表示“无值”,用于初始化或占位 | x = None |
复数(complex) | 由实部和虚部组成的数(虚部用 j 或 J 表示) | 3+4j , 5-2j |
2.3 字符串进阶操作
字符串是 Python 中最常用的数据类型之一,支持丰富的内置方法:
2.3.1 字符串拼接与格式化
-
拼接:用
+
连接(仅字符串类型可拼接),或用f-string
(Python 3.6+ 推荐)。name = "张三" age = 20 # 方式1:+ 拼接(需转换非字符串类型) info = "姓名:" + name + ",年龄:" + str(age) # 方式2:f-string(自动转换类型) info = f"姓名:{name},年龄:{age}"
-
格式化:用
%
占位符(旧语法)或str.format()
(通用语法)。# % 格式化 print("圆周率:%.2f" % 3.14159) # 输出:圆周率:3.14 # str.format() print("姓名:{},分数:{}".format("李四", 95)) # 输出:姓名:李四,分数:95
2.3.2 字符串常用方法
方法 | 功能描述 | 示例 |
---|---|---|
len(s) | 返回字符串长度 | len("abc") → 3 |
s.upper() | 转为大写 | "hello".upper() → “HELLO” |
s.lower() | 转为小写 | "WORLD".lower() → “world” |
s.strip() | 去除首尾空格(lstrip() 去左空格,rstrip() 去右空格) | " test ".strip() → “test” |
s.split(sep) | 按分隔符 sep 分割字符串,返回列表 | "a,b,c".split(",") → ["a","b","c"] |
s.replace(old, new) | 替换字符串中的 old 为 new | "apple".replace("a", "A") → “Apple” |
s.startswith(prefix) | 判断是否以 prefix 开头 | "hello".startswith("he") → True |
s.endswith(suffix) | 判断是否以 suffix 结尾 | "hello".endswith("lo") → True |
三、运算符与表达式
3.1 算术运算符
用于数值计算,支持整数、浮点数、复数。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | 5 + 3 | 8 |
- | 减法 | 7 - 2 | 5 |
* | 乘法 | 4 * 6 | 24 |
/ | 除法(浮点) | 10 / 3 | 3.333… |
// | 整除(取整) | 10 // 3 | 3 |
% | 取余 | 10 % 3 | 1 |
** | 幂运算 | 2 ** 3 | 8 |
3.2 比较运算符
返回布尔值(True
/False
),用于条件判断。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
== | 等于 | 5 == 3 | False |
!= | 不等于 | 5 != 3 | True |
> | 大于 | 5 > 3 | True |
< | 小于 | 5 < 3 | False |
>= | 大于等于 | 5 >= 3 | True |
<= | 小于等于 | 5 <= 3 | False |
3.3 逻辑运算符
用于组合多个条件,返回布尔值。
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
and | 逻辑与(全真为真) | (5 > 3) and (2 < 4) | True |
or | 逻辑或(有真为真) | (5 < 3) or (2 > 4) | False |
not | 逻辑非(取反) | not (5 == 3) | True |
3.4 成员运算符与身份运算符
-
成员运算符(判断元素是否在序列中):
in
:存在返回True
(如"a" in "abc"
→True
)。not in
:不存在返回True
(如"d" not in "abc"
→True
)。
-
身份运算符(判断是否为同一对象):
is
:内存地址相同返回True
(如a is b
)。is not
:内存地址不同返回True
(如a is not b
)。
四、流程控制:条件与循环
4.1 条件语句(if-elif-else)
根据条件判断执行不同代码块,支持嵌套。
score = 85
if score >= 90:
print("优秀")
elif score >= 80: # elif 是 else if 的缩写
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
4.2 循环语句
4.2.1 for 循环
遍历可迭代对象(如列表、字符串、字典等),语法:
# 遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(fruit)
# 遍历字符串
for char in "Python":
print(char) # 输出 P y t h o n
# 遍历字典(默认遍历键)
person = {"name": "张三", "age": 20}
for key in person:
print(key, person[key]) # 输出 name 张三; age 20
4.2.2 while 循环
当条件为真时重复执行代码块,语法:
count = 0
while count < 5:
print(f"当前计数:{count}")
count += 1 # 等价于 count = count + 1
4.3 循环控制语句
break
:终止当前循环,跳出循环体。continue
:跳过当前循环剩余代码,进入下一次循环。else
:循环正常结束后执行(若因break
终止则不执行)。
# 示例:寻找第一个偶数
numbers = [1, 3, 5, 7, 8, 9]
for num in numbers:
if num % 2 == 0:
print(f"找到偶数:{num}")
break
else:
print("未找到偶数") # 若循环未被 break 则执行
五、函数:代码复用的核心
5.1 函数定义与调用
函数是封装好的、可重复使用的代码块,语法:
def 函数名(参数1, 参数2=默认值):
"""函数文档字符串(说明功能、参数、返回值)"""
代码块
return 返回值 # 可选,无 return 则返回 None
5.2 参数类型
Python 支持多种参数类型,灵活适应不同场景:
5.2.1 位置参数(必传)
调用时必须按顺序传递的参数:
def add(a, b):
return a + b
add(3, 5) # 输出 8
5.2.2 默认参数(可选)
参数有默认值,调用时可省略:
def greet(name, msg="早上好"):
print(f"{name},{msg}!")
greet("张三") # 输出 张三,早上好!
greet("李四", "晚上好") # 输出 李四,晚上好!
5.2.3 可变参数(*args)
接收任意数量的位置参数,存储为元组:
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
sum_numbers(1, 2, 3, 4) # 输出 10
5.2.4 关键字参数(**kwargs)
接收任意数量的键值对参数,存储为字典:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="张三", age=20, city="北京")
# 输出:
# name: 张三
# age: 20
# city: 北京
5.3 lambda 表达式(匿名函数)
用于快速定义简单函数,语法:lambda 参数: 表达式
。
# 普通函数
def square(x):
return x ** 2
# lambda 等价写法
square = lambda x: x ** 2
print(square(5)) # 输出 25
六、数据结构:列表、元组、字典、集合
6.1 列表(list):有序可变容器
列表是 Python 中最常用的数据结构,用 []
定义,支持任意类型元素。
6.1.1 列表基本操作
操作 | 示例 | 结果 |
---|---|---|
索引访问 | nums = [1, 2, 3]; nums[0] | 1 |
切片([start:end:step] ) | nums[1:3] | [2, 3] |
修改元素 | nums[0] = 10 | nums 变为 [10, 2, 3] |
添加元素(末尾) | nums.append(4) | nums 变为 [10, 2, 3, 4] |
插入元素(指定位置) | nums.insert(1, 9) | nums 变为 [10, 9, 2, 3, 4] |
删除元素(按值) | nums.remove(9) | nums 变为 [10, 2, 3, 4] |
删除元素(按索引) | nums.pop(0) | nums 变为 [2, 3, 4] |
排序 | nums.sort() | nums 变为 [2, 3, 4] |
反转 | nums.reverse() | nums 变为 [4, 3, 2] |
6.1.2 列表推导式:高效生成列表
用简洁语法生成列表,语法:[表达式 for 变量 in 可迭代对象 if 条件]
。
# 生成 0-9 的平方列表
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, ..., 81]
# 筛选偶数的平方
even_squares = [x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]
6.2 元组(tuple):有序不可变容器
元组用 ()
定义(可省略括号),元素不可修改(保护数据安全)。
t = (1, "a", True)
# t[0] = 2 # 报错:TypeError: 'tuple' object does not support item assignment
6.3 字典(dict):键值对映射
字典用 {}
定义,键(key)必须唯一且不可变(如字符串、数字、元组),值(value)可为任意类型。
6.3.1 字典基本操作
操作 | 示例 | 结果 |
---|---|---|
访问值 | person = {"name": "张三"}; person["name"] | "张三" |
添加/修改键值对 | person["age"] = 20 | person 变为 {"name": "张三", "age": 20} |
删除键值对 | del person["age"] | person 变为 {"name": "张三"} |
获取所有键 | person.keys() | dict_keys(['name']) |
获取所有值 | person.values() | dict_values(['张三']) |
获取所有键值对 | person.items() | dict_items([('name', '张三')]) |
6.3.2 字典推导式
类似列表推导式,语法:{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}
。
# 生成字母与其ASCII码的字典
ascii_dict = {char: ord(char) for char in "abc"} # {'a':97, 'b':98, 'c':99}
6.4 集合(set):无序唯一元素容器
集合用 {}
定义(空集合需用 set()
),元素唯一(自动去重),支持交集、并集等操作。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
# 交集(同时存在的元素)
print(s1 & s2) # {2, 3}
# 并集(所有元素)
print(s1 | s2) # {1, 2, 3, 4}
# 差集(s1有但s2没有的元素)
print(s1 - s2) # {1}
七、异常处理:让程序更健壮
7.1 异常捕获(try-except)
用 try-except
捕获并处理可能出现的错误,避免程序崩溃。
try:
num = int(input("请输入一个整数:"))
print(f"输入的数是:{num}")
except ValueError: # 捕获类型错误(输入非整数时触发)
print("输入无效,请输入整数!")
7.2 多异常捕获与 finally 子句
except
可指定多个异常类型(用元组包裹)。finally
子句:无论是否发生异常,都会执行(常用于资源释放)。
try:
f = open("test.txt", "r")
content = f.read()
print(content)
except (FileNotFoundError, PermissionError) as e: # 捕获文件不存在或无权限异常
print(f"错误:{e}")
finally:
if 'f' in locals(): # 检查文件是否已打开
f.close() # 确保关闭文件
7.3 自定义异常
通过继承 Exception
类创建自定义异常,提升代码可读性。
class AgeError(Exception):
def __init__(self, message):
super().__init__(message)
def check_age(age):
if age < 0:
raise AgeError("年龄不能为负数!") # 抛出异常
elif age > 150:
raise AgeError("年龄不合理!")
try:
check_age(-5)
except AgeError as e:
print(e) # 输出:年龄不能为负数!
八、模块与包:代码组织的艺术
8.1 模块(Module)
模块是一个 .py
文件,包含函数、类、变量等,可通过 import
导入复用。
8.1.1 导入模块的方式
# 方式1:导入整个模块(需用 模块名.函数 调用)
import math
print(math.sqrt(16)) # 输出 4.0
# 方式2:导入指定函数/变量(直接调用)
from math import sqrt
print(sqrt(16)) # 输出 4.0
# 方式3:重命名模块(简化调用)
import numpy as np
arr = np.array([1, 2, 3]) # 用 np 代替 numpy
8.2 包(Package)
包是包含多个模块的文件夹,需在文件夹中创建 __init__.py
文件(可空,标识为包)。
my_package/
├── __init__.py
├── module1.py
└── module2.py
8.3 模块搜索路径
Python 导入模块时,会按以下顺序搜索路径:
- 当前目录。
- 环境变量
PYTHONPATH
中的路径。 - Python 安装的默认库路径(如
site-packages
)。
九、文件操作:数据的持久化
9.1 文件打开模式
用 open(file, mode)
打开文件,mode
决定读写方式:
模式 | 描述 |
---|---|
r | 只读(默认),文件不存在报错 |
w | 只写(覆盖原有内容),文件不存在则创建 |
a | 追加写(不覆盖原有内容),文件不存在则创建 |
r+ | 读写(从开头开始) |
w+ | 读写(覆盖原有内容) |
a+ | 读写(追加到末尾) |
b | 二进制模式(如 rb 读二进制,wb 写二进制) |
9.2 文件读写示例
# 写入文件(覆盖模式)
with open("demo.txt", "w", encoding="utf-8") as f: # with 自动关闭文件
f.write("Hello\n") # 写入字符串
f.write("Python\n")
# 读取文件(逐行读取)
with open("demo.txt", "r", encoding="utf-8") as f:
for line in f: # 逐行读取(内存友好)
print(line.strip()) # 输出 Hello; Python
十、面向对象编程(OOP)
10.1 类与对象
- 类(Class):定义对象的属性和方法(模板)。
- 对象(Object):类的实例(具体实例化的个体)。
class Person:
# 类属性(所有实例共享)
species = "人类"
# 构造方法(初始化实例属性)
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
# 实例方法
def introduce(self):
print(f"我是{self.name},{self.age}岁,属于{self.species}。")
# 创建对象(实例化)
p1 = Person("张三", 20)
p1.introduce() # 输出:我是张三,20岁,属于人类。
10.2 继承与多态
- 继承:子类继承父类的属性和方法(避免重复代码)。
- 多态:子类重写父类方法,实现不同行为。
# 父类(基类)
class Animal:
def speak(self):
raise NotImplementedError("子类必须实现speak方法")
# 子类(派生类)
class Dog(Animal):
def speak(self):
print("汪汪!")
class Cat(Animal):
def speak(self):
print("喵喵!")
# 多态示例
def animal_speak(animal):
animal.speak()
dog = Dog()
cat = Cat()
animal_speak(dog) # 输出:汪汪!
animal_speak(cat) # 输出:喵喵!
10.3 封装与访问控制
- 私有属性/方法:用双下划线
__
开头,仅类内部可访问(外部访问会报错)。 - 保护属性/方法:用单下划线
_
开头(约定俗成,提示外部不要直接访问)。
class Account:
def __init__(self, balance):
self.__balance = balance # 私有属性(余额)
def get_balance(self):
return self.__balance # 公有方法访问私有属性
acc = Account(1000)
# print(acc.__balance) # 报错:AttributeError(外部无法直接访问)
print(acc.get_balance()) # 输出:1000
十一、总结与学习建议
本文覆盖了 Python 从环境搭建到面向对象的全基础知识点,但“纸上得来终觉浅”,建议:
- 多敲代码:每学一个知识点,立刻动手编写示例并调试。
- 参与项目:从简单的小项目(如学生信息管理系统)开始,实践中巩固知识。
- 阅读文档:熟练后多查阅 Python 官方文档,学习标准库和第三方库的使用。
Python 的魅力在于其简洁与强大,愿你在编程之路上越走越远!