Python基础知识点整理:从语法入门到核心容器、函数与拷贝
文章目录
文章标题:Python基础知识点整理:从语法入门到核心容器、函数与拷贝
文章摘要
这是一篇面向初学者的 Python 基础整理稿,覆盖注释、输入输出、变量、数据类型、字符串、判断、循环、列表、元组、字典、集合、函数、模块、深浅拷贝与可变对象等核心内容。
适合拿来做入门梳理、期末复习、面试前速查,也适合作为后续学习爬虫、数据分析和自动化脚本的基础目录。
你可以从这篇文章里学到什么
- Python 的基础语法和常见数据类型
- 字符串、列表、字典、集合等核心容器操作
- 条件判断、循环控制和函数定义
- 深浅拷贝、作用域、可变对象这些容易混淆的点
一、Python基础认识
Python 是一门面向对象、解释型、强类型、动态语言。
- 解释型语言:开发调试方便,跨平台能力强。
- 编译型语言:运行效率通常更高,但跨平台能力相对弱。
- Python 的优势:语法简洁、可读性强、生态成熟、适合快速开发。
解释型与编译型的简单对比
| 类型 | 优点 | 缺点 |
|---|---|---|
| 解释型 | 跨平台、开发调试方便 | 执行相对较慢 |
| 编译型 | 执行速度快 | 可移植性相对差 |
二、注释
1. 单行注释
使用 #:
# 这是单行注释
print("hello")
2. 多行注释
通常使用三引号:
"""
这是多行说明
也常用于文档字符串
"""
3. 批量注释和取消注释
很多编辑器里都可以使用:
Ctrl + /
三、输入与输出
1. 输出:print()
sep
用于设置多个输出项之间的分隔符:
print("哈哈哈", "嘿嘿嘿", "嘻嘻嘻")
print("哈哈哈", "嘿嘿嘿", "嘻嘻嘻", sep=",")
end
用于设置输出结束符,默认是换行 \n:
print("字符串1", end=" + ")
print("字符串2")
2. 输入:input()
name = input("请输入姓名:")
print(name)
注意:
input()获取到的结果默认都是字符串。
四、变量与标识符命名规范
1. 合法标识符
- 可以由字母、数字、下划线组成
- 不能以数字开头
- Python 3 理论上支持中文变量名,但不建议
2. 区分大小写
name = "Tom"
Name = "Jerry"
这两个变量不是同一个。
3. 不能使用关键字
例如:
if
while
for
import
as
4. 命名建议
- 见名知意
- 使用小写字母加下划线
- 不要使用拼音缩写堆砌
user_name = "Alice"
user_age = 18
五、数据类型
1. 数值类型
| 类型 | 说明 | 示例 |
|---|---|---|
int | 整数 | 10 |
float | 浮点数 | 3.14 |
bool | 布尔值 | True / False |
complex | 复数 | 3 + 4j |
2. 核心数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
str | 字符串 | "Python" |
list | 列表,可变 | [1, 2, 3] |
tuple | 元组,不可变 | (1, 2, 3) |
dict | 字典,键值对 | {"name": "Tom"} |
set | 集合,去重、无序 | {1, 2, 3} |
3. 查看类型
print(type(10))
print(type("hello"))
print(type([1, 2, 3]))
六、表达式
数字、变量、运算符、括号等组合起来就形成表达式。
a = 10
b = 3
result = a + b * 2
七、运算符
1. 算术运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
+ | 加法 | 1 + 2 |
- | 减法 | 5 - 3 |
* | 乘法 | 2 * 4 |
/ | 除法 | 5 / 2 |
// | 整除 | 5 // 2 |
% | 取模 | 5 % 2 |
** | 幂运算 | 2 ** 3 |
print(10 / 3) # 3.333...
print(10 // 3) # 3
print(10 % 3) # 1
print(2 ** 3) # 8
2. 位运算符
位运算只适用于整数:
| 运算符 | 含义 |
|---|---|
~ | 按位取反 |
& | 按位与 |
| ` | ` |
^ | 按位异或 |
<< | 左移 |
>> | 右移 |
print(~5) # -6
print(5 << 1) # 10
print(5 >> 1) # 2
3. 比较运算符
| 运算符 | 含义 |
|---|---|
== | 值是否相等 |
!= | 值是否不等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
print(3 > 2)
print(3 == 3)
print(3 != 4)
== 和 is 的区别
==:比较值是否相等is:比较是否是同一个对象
print(1 == 1.0) # True
print(1 is 1.0) # False
4. 逻辑运算符
| 运算符 | 含义 |
|---|---|
not | 逻辑非 |
and | 逻辑与 |
or | 逻辑或 |
优先级:
not > and > or
5. 赋值运算符
x = 10
x += 1
x -= 2
x *= 3
Python 没有
++和--。
6. 运算符优先级
从高到低大致为:
**+x、-x、~*、/、//、%+、-<<、>>&^|- 比较运算
notandor- 赋值
最稳妥的做法:不确定时加括号。
八、字符串
字符串是 Python 最常用的数据类型之一,特点是不可变。
1. 字符串的三种写法
'hello'
"hello"
"""多行文本"""
2. 基础特性
- 不可变
- 可迭代
- 支持索引和切片
3. 索引
s = "Python"
print(s[0]) # P
print(s[-1]) # n
4. 切片
s = "Python"
print(s[1:4]) # yth
print(s[::2]) # Pto
print(s[::-1]) # nohtyP
5. 常用操作
print("Hello" + " " + "World")
print("-" * 10)
print("ll" in "hello")
6. 常用内置方法
大小写转换
print("hello".upper())
print("HELLO".lower())
print("hello world".title())
去除空白字符
s = " \n Python \t "
print(s.strip())
print(s.lstrip())
print(s.rstrip())
查找与替换
s = "hello world"
print(s.find("l"))
print(s.replace("l", "x", 2))
分割与连接
s = "a,b,c"
print(s.split(","))
print("-".join(["a", "b", "c"]))
类型判断
print("123".isdigit())
print("abc".isalpha())
7. 字符串格式化
f-string
name = "Elysia"
age = 18
print(f"姓名:{name},年龄:{age}")
format()
print("Hello, {}!".format(name))
% 格式化
print("姓名: %s, 年龄: %d" % (name, age))
常见形式:
%6d:宽度 6,左侧空格补齐%06d:宽度 6,左侧 0 补齐
8. 转义字符
print("\n")
print("\t")
print("\\")
原始字符串:
print(r"\n")
9. 注意事项
- 引号必须成对出现
- 非字符串拼接前要先
str() - 字符串方法通常返回新字符串,不修改原值
九、判断语句
1. if
age = 18
if age >= 18:
print("已成年")
2. if...else
age = int(input("请输入年龄:"))
if age < 18:
print("未成年")
else:
print("已成年")
3. if...elif...else
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
4. 嵌套判断
age = 20
vip = True
if age >= 18:
if vip:
print("欢迎进入 VIP 区")
十、循环
1. while 循环
适用于循环次数未知的情况:
i = 1
while i <= 5:
print(i)
i += 1
2. for 循环
适用于遍历序列:
for i in range(1, 6):
print(i)
3. break
for i in range(10):
if i == 5:
break
print(i)
4. continue
for i in range(5):
if i == 2:
continue
print(i)
5. 循环选择建议
- 已知遍历对象或循环次数:优先
for - 条件驱动、次数不固定:优先
while
十一、列表 list
列表特点:
- 有序
- 可重复
- 可修改
- 可存放不同类型数据
1. 创建列表
list1 = [1, "hello", True, [2, 3]]
list2 = []
list3 = list("abc")
2. 索引与切片
lst = [10, 20, 30, 40, 50]
print(lst[0])
print(lst[-1])
print(lst[1:3])
print(lst[::-1])
3. 增加元素
lst = [10, 20, 30]
lst.append(40)
lst.extend([50, 60])
lst.insert(1, 15)
4. 删除元素
lst.remove(20)
lst.pop()
del lst[0]
lst.clear()
5. 修改元素
lst = [1, 2, 3]
lst[0] = 10
6. 查询与统计
lst = [1, 2, 1, 3]
print(lst.index(2))
print(lst.count(1))
7. 排序与反转
lst = [2, 3, 5, 1, 4]
lst.sort()
print(lst)
lst.reverse()
print(lst)
8. 列表推导式
squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(squares)
9. 嵌套列表
matrix = [[1, 2, 3], [4, 5, 6]]
十二、元组 tuple
元组特点:
- 有序
- 不可修改
- 适合保存不希望被改动的数据
1. 基本格式
t1 = (1, 2, 3)
t2 = ()
t3 = (1,)
只有一个元素时,末尾必须加逗号。
2. 与列表的区别
| 项目 | 列表 | 元组 |
|---|---|---|
| 是否可修改 | 可修改 | 不可修改 |
| 写法 | [] | () |
| 使用场景 | 动态数据 | 固定数据 |
3. 应用场景
- 函数多返回值
- 配置项
- 不希望被误修改的数据
十三、字典 dict
字典由键值对组成,查找效率高。
1. 基本格式
user = {"name": "Tom", "age": 18}
特点:
- 键唯一
- 值可以重复
- 键重复时,后面的会覆盖前面的
2. 查看元素
dic = {"name": "bingbing", "age": 18}
print(dic["age"])
print(dic.get("sex"))
print(dic.get("sex", "不存在"))
dic["不存在的键"]会报错,dic.get()更安全。
3. 修改与添加元素
dic["age"] = 20
dic["sex"] = "女"
4. 删除元素
del dic["age"]
dic.pop("name")
dic.clear()
5. 常见操作
dic = {"name": "bingbing", "age": 18}
print(len(dic))
print(dic.keys())
print(dic.values())
print(dic.items())
6. 遍历字典
for key in dic.keys():
print(key)
for value in dic.values():
print(value)
for key, value in dic.items():
print(key, value)
7. 应用场景
使用键值对描述一个对象的属性:
student = {"name": "Tom", "age": 20, "score": 95}
十四、集合 set
集合特点:
- 无序
- 元素唯一
- 可自动去重
- 不能通过下标访问
1. 基本格式
s = {1, 2, 3}
2. 添加元素
s.add(5)
s.update("67")
3. 删除元素
s.remove(3)
s.discard(10)
s.pop()
4. 交集、并集
a = {1, 2, 3}
b = {3, 4, 5}
print(a & b) # 交集
print(a | b) # 并集
print(a - b) # 差集
5. 应用场景
- 数据去重
- 集合关系计算
十五、类型转换
常见转换函数如下:
print(int("123"))
print(float("3.14"))
print(str(100))
print(list("abc"))
print(tuple([1, 2, 3]))
print(set([1, 1, 2, 3]))
十六、深拷贝与浅拷贝
这部分是 Python 初学者很容易混淆的重点。
1. 赋值
赋值不是拷贝,而是多个变量指向同一个对象:
li = [1, 2, 3]
li2 = li
2. 浅拷贝
浅拷贝只拷贝第一层:
import copy
li = [1, 2, 3, [4, 5, 6]]
li2 = copy.copy(li)
特点:
- 外层对象不同
- 内层嵌套对象仍可能共用
3. 深拷贝
深拷贝会递归拷贝所有层:
import copy
li = [1, 2, 3, [4, 5, 6]]
li2 = copy.deepcopy(li)
特点:
- 外层不同
- 内层也不同
- 修改互不影响
4. 对比总结
| 方式 | 是否新建对象 | 嵌套层是否共享 |
|---|---|---|
| 赋值 | 否 | 共享 |
| 浅拷贝 | 是 | 可能共享 |
| 深拷贝 | 是 | 不共享 |
十七、可变对象与不可变对象
1. 可变对象
常见可变对象:
listdictset
特点:值变了,内存地址通常不变。
2. 不可变对象
常见不可变对象:
intfloatstrtuple
特点:修改时本质上会创建新对象。
十八、函数
函数用于封装可复用逻辑。
1. 函数定义与调用
def login(name):
print("这是登录函数")
login("Tom")
2. 参数类型
位置参数
def add(a, b):
return a + b
print(add(3, 5))
关键字参数
print(add(b=5, a=3))
默认参数
def power(x, n=2):
return x ** n
可变位置参数 *args
def sum_numbers(*args):
return sum(args)
可变关键字参数 **kwargs
def print_info(**kwargs):
for k, v in kwargs.items():
print(k, v)
3. 返回值
无返回值
默认返回 None
单返回值
def square(x):
return x * x
多返回值
def get_name_and_age():
return "bingbing", 18
4. return 和 print 的区别
return是把结果返回给调用者print是把内容输出到控制台
5. 作用域
局部作用域
def test_local():
local_var = 10
print(local_var)
全局作用域
global_var = 20
def modify_global():
global global_var
global_var = 30
嵌套作用域
def outer():
outer_var = 40
def inner():
nonlocal outer_var
outer_var = 50
inner()
print(outer_var)
6. 匿名函数 lambda
add = lambda a, b: a + b
print(add(7, 8))
7. 装饰器
def my_decorator(func):
def wrapper():
print("Before")
func()
print("After")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
8. 递归函数
def factorial(n):
if n in (0, 1):
return 1
return n * factorial(n - 1)
9. 生成器函数
def count_up_to(n):
num = 1
while num <= n:
yield num
num += 1
十九、模块与包
1. 模块
一个 .py 文件通常就是一个模块。
import math
print(math.sqrt(16))
2. 包
一个包含多个模块的目录通常叫包。
常见结构:
mypackage/
├── __init__.py
├── module1.py
└── module2.py
二十、学习建议
如果你正处于 Python 入门阶段,建议按这个顺序学习:
- 变量、输入输出、注释
- 数据类型与运算符
- 字符串、判断、循环
- 列表、元组、字典、集合
- 函数、作用域、模块
- 深浅拷贝、可变与不可变对象
更多推荐
所有评论(0)