Python入门笔记-新手篇
一、变量与命名规则
1.0 变量名与值
变量名是值的容器,用于存储数值。实际上,数值存储在内存中,变量名是数值内存的访问地址的别名(可理解为名称),
1.1 变量命名规范
必须遵守(硬性要求)
- 长度建议 不超过 256 个字符(虽无强制限制,但过长影响可读性)。
- 不能包含空格。
- 只能包含:字母(a-z, A-Z)、数字(0-9)、下划线(_)。
- 区分大小写:
name和Name是两个不同变量。 - 不能以数字开头:如
1var是非法的。
建议(良好编程习惯)
- 变量名应有意义:能反映其用途(如
user_age比x更好),方便其他人或后期阅读(后期维护)。 - 不要使用 Python 关键字、函数名、调用的库名、模块名作为变量名:会导致错误或难以调试。
举例:
a = 1
print(a)
# 我们将1赋值给变量名a,
1.2 关键字与函数名
关键字与函数名实际上是特殊的变量名,内置了魔法方法 __call__ 使其可以调用。关键字是强制性的,函数名不是强制性的。魔法方法在类、对象区域【暂时了解即可】
关键字
-
这些词有特殊语法含义,不能用作变量名,否则报错为语法错误
SyntaxError。 -
完整列表(共 35 个,截至 Python 3.11):
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield' -
查看关键字列表的方法:
import keyword print(keyword.kwlist)
函数名
- 函数分为两类:
- 内置函数:Python内置定义的函数,如
print(),len(),type()等。 - 自定义函数:由用户使用
def或lambda定义的函数。
- 内置函数:Python内置定义的函数,如
二、注释
2.1 单行注释
-
使用
#:# 这是一条单行注释 x = 1 # 行尾也可以加注释 -
也可用字符串(不推荐,仅作了解):
"这其实不是标准注释,只是未使用的字符串" '同上'
2.2 多行注释
-
使用三对引号:
"""..."""或'''...'''''' 这是多行注释 可以写很多行 通常用于函数或模块说明 '''
建议:每行注释不超过 120 个字符,保持代码整洁。
2.3 函数说明
三、数据结构
3.1 数字型
| 类型 | 说明 | 示例 |
|---|---|---|
int |
整数 | 42, -7 |
float |
浮点数(带小数) | 3.14, -0.001, 0. |
bool |
布尔值(逻辑值) | True, False |
complex |
复数 | 3+4j, complex(3, 4) |
关于布尔型 bool
- 在 Python 3 中,
bool是int的子类:True == 1→TrueFalse == 0→True
- 哪些值转为
False?:NoneFalse- 数字零:
0,0.0,0j - 空容器:
''(空字符串)、()(空元组)、[](空列表)、{}(空字典/集合)
- 其他所有值转为
True
复数 complex
-
两种写法:
z1 = 3 + 4j z2 = complex(3, 4) # 实部=3,虚部=4 -
注意:实部和虚部在内部都存储为
float类型。
3.2 非数字型
| 类型 | 英文名 | 说明 |
|---|---|---|
| 字符串 | str |
文本数据,如 "Hello" |
| 列表 | list |
有序、可变序列,如 [1, 2, 3] |
| 元组 | tuple |
有序、不可变序列,如 (1, 2, 3) |
| 字典 | dict |
键值对映射,如 {"name": "Alice",},"name"为键,"Alice" 为值 |
| 集合 | set |
无序、不重复元素集合,如 {1, 2, 3} |
空值:None
- 表示“无值”或“空”,是
NoneType类型的唯一实例。 - 常用于函数无返回值时的默认返回。
3.3 数据类型转换
| 函数 | 作用 |
|---|---|
int(x) |
转为整数 |
float(x) |
转为浮点数 |
complex(x, y) |
转为复数(x 为实部,y 为虚部) |
str(x) |
转为字符串 |
list() |
转为列表 |
tuple() |
转为元组 |
set() |
转为集合 |
dict() |
转为字典 |
repr(x) |
返回对象的“官方”字符串表示(常用于调试) |
示例:
str(123) # '123' int("45") # 45 float(True) # 1.0
3.4 查询数据类型
| 方法 | 说明 |
|---|---|
type(value) |
返回 value 的具体类型 |
isinstance(value, 类型) |
判断 value 是否属于指定类型(支持继承判断) |
示例:
x = 100 print(type(x)) # <class 'int'> print(isinstance(x, int)) # True print(isinstance(x, (int, float))) # True(检查是否为 int 或 float)
四、运算符
4.1 赋值运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
= |
基本赋值 | a = 5 |
a = b = c = 1 |
多变量同值(共享同一内存地址) | 任意变量值改变,其他变量值也会改变 |
a, b, c = 1, '2', [2,3] |
多变量分别赋值(解包) |
增强赋值(复合赋值)
| 运算符 | 等价形式 |
|---|---|
+= |
a = a + b |
-= |
a = a - b |
*= |
a = a * b |
/= |
a = a / b |
%= |
a = a % b |
**= |
a = a ** b |
//= |
a = a // b |
:= |
海象运算符(表达式内赋值) |
4.2 算术运算符
| 符号 | 含义 |
|---|---|
+ |
加法 |
- |
减法 |
* |
乘法 |
** |
幂运算(如 2**3 = 8) |
/ |
除法(结果为 float) |
// |
整除(向下取整) |
% |
取模(余数) |
运算优先级(遵循数学规则):** > * = / = // = % > + = -
4.3 比较运算符
| 运算符 | 含义(返回 bool 型) |
|---|---|
== |
等于 |
!= |
不等于 |
> / >= |
大于 / 大于等于 |
< / <= |
小于 / 小于等于 |
4.4 逻辑运算符
| 运算符 | 含义(返回 bool 型) |
优先级 |
|---|---|---|
not |
非 | 最高 |
and |
与 | 中 |
or |
或 | 最低 |
示例:
条件1 or 条件2
4.5 成员运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
in |
是否在容器中 | 'a' in 'abc' → True |
not in |
是否不在容器中 | 5 not in [1,2,3] → True |
4.6 身份运算符(比较内存地址)
| 运算符 | 含义 | 示例 |
|---|---|---|
is |
是否为同一个对象(内存地址相同) | a is b |
is not |
是否不是同一个对象 |
⚠️ 注意:
is与==不同!a = [1, 2] b = [1, 2] print(a == b) # True(值相等) print(a is b) # False(不同对象)
五、Python 函数基础
5.1 常用内置函数(粗略认识)
| 函数 | 常用参数 | 解释 | 示例 |
|---|---|---|---|
print() |
字符型打印 | ||
len() |
|||
5.2 参数类型
形参(定义时)
-
必要参数:调用时必须提供。
-
*args:接收任意数量的非关键字参数,打包成 元组。def func(*args): print(args) # args 是一个 tuple func(1, 2, 3) # (1, 2, 3) -
**kwargs:接收任意数量的关键字参数,打包成 字典。def func(**kwargs): print(kwargs) # kwargs 是一个 dict func(name="Alice", age=25) # {'name': 'Alice', 'age': 25}
💡
*和**也用于“拆包”(unpacking)。
5.3 内置函数底层实现【进阶内容,新手跳过】
iter():
底层对象含有 __iter__
next():底层对象含有 __next__
obj
len(obj) is obj.__len__()
srt(obj) is obj.__str__()
iter(obj) is obj.__iter__()
def func():return
func() is func.__call__()
| 函数 | 用途 |
|---|---|
iter(obj) |
返回对象的迭代器 |
next(iterator) |
获取迭代器的下一个元素 |
5.4 函数定义增强语法
返回值类型提示(Type Hint)
def greet(name: str) -> str:
return f"Hello, {name}"
-> str:表示预期返回字符串。- 注意:这只是提示,Python 不会强制检查类型。
省略号 ...
-
是内置对象
Ellipsis的字面量。 -
常用于占位(如抽象方法):
def todo_function(): ...
九、面向对象
类
对象
魔法方法
十、字符串(str)详解
10.1 多行字符串
text = """
这是
多行
字符串
"""
10.2 索引(Indexing)
- 字符串是序列类型,支持索引。
- 正向索引:从
0开始(s[0]是第一个字符)。 - 反向索引:从
-1开始(s[-1]是最后一个字符)。
10.3 切片(Slicing)
-
语法:
s[start:stop:step]start:起始位置(包含)stop:结束位置(不包含)step:步长(可省略,默认为 1)
-
常见用法:
s = "abcdef" s[:] # "abcdef"(复制整个字符串) s[::-1] # "fedcba"(反转字符串) s[1:4] # "bcd"
10.4 常用字符串方法
| 方法 | 说明 |
|---|---|
.lower() |
转小写 |
.upper() |
转大写 |
.strip() |
去除首尾空白 |
.lstrip() |
去除左侧空白 |
.rstrip() |
去除右侧空白 |
.split(sep) |
按 sep 分割为列表 |
.find(sub) |
查找子串位置(未找到返回 -1) |
.replace(old, new) |
替换子串 |
len(s) |
获取字符串长度(字符数) |
10.5 转义字符
| 转义符 | 含义 |
|---|---|
\n |
换行 |
\t |
制表符(Tab) |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠本身 |
常用函数
容器类型
列表
字典
元组
集合
条件语句
嵌套
循环语句
for循环
while循环
任务目标:手写气泡排序法,杨辉三角
十一、库
常用必会的Python内置库:(至少需要了解)
| 库名 | 用途 |
|---|---|
time |
获取时间戳、延迟等 |
datetime |
处理日期和时间 |
random |
生成随机数 |
os |
与操作系统交互(文件、路径、环境变量等) |
re |
正则表达式,自定义规则提取或检查字符【AI 问一下就知道是什么了】 |
tkinter |
简易 UI 界面【学会了可以给自己的对象写一个表白动画】 |
第三方库:
安装库【建议使用 uv 包管理器来安装】
自定义库:
十二、变量作用域(Scope)
Python 中变量的作用域按 LEGB 规则查找:
- Local(局部):函数内部定义的变量。
- Enclosing(嵌套):外层函数的变量(闭包)。
- Global(全局):模块级别定义的变量。
- Built-in(内建):Python 内置名称(如
len,print)。
12.1 局部作用域
- 在
def内定义的变量。 - 一旦在函数内对变量赋值,它就被视为局部变量。
- 若只读取未赋值,则会查找全局变量。
12.2 全局变量声明
-
使用
global声明,可在函数内修改全局变量:x = 10 def func(): global x x = 20
12.3 嵌套作用域与 nonlocal
-
在嵌套函数中,若要修改外层函数的变量,使用
nonlocal:def outer(): x = 1 def inner(): nonlocal x x = 2 inner() print(x) # 输出 2
十三、异常处理
基本结构:try-except
try:
# 可能出错的代码
risky_code()
except ValueError:
# 捕获特定异常
print("值错误!")
except Exception as e:
# 捕获其他所有异常
print("发生错误:", e)
try:尝试执行可能引发异常的代码块。except:当异常发生时执行的处理代码。- 可指定异常类型(如
ValueError,TypeError)。 - 也可捕获通用异常
Exception。
- 可指定异常类型(如
✅ 良好实践:尽量捕获具体异常类型,而非笼统使用
except:。
九、占位符
代码结构占位符
表示“此处待实现”。【将来可能会实现,但要保证结构完整】
...:python内置Ellipsis对象,省略号。pass"""TODO"""
值占位
None:空值NotImplemented:让 Python 尝试 other 的__radd__
格式化占位【已被新式输出取代,现较不常用】
%%s:输出字符串%d:输出int类型数字%f:输出浮点数%.nf:可以保留n位小数,n=0则不保留小数,四舍五入%x:输出16进制数字: 使用方式: print('%s_%d_%f_%x', %(a,b,c,d))
"{ }".format()- 命名占位符
: "{} {}".format("hello", 123) #-> "hello 123"
- 位置占位符
: "{name} {value} {}".format(2, name="id", value=123)#->"id 123 2"
- 命名占位符
f"{ }"【格式化输出】
约定占位符
_:for循环不调用【推荐】: for _ in range(10):循环体
浙公网安备 33010602011771号