Python入门笔记-新手篇

一、变量与命名规则

1.0 变量名与值

变量名是值的容器,用于存储数值。实际上,数值存储在内存中,变量名是数值内存的访问地址的别名(可理解为名称),

1.1 变量命名规范

必须遵守(硬性要求)

  • 长度建议 不超过 256 个字符(虽无强制限制,但过长影响可读性)。
  • 不能包含空格
  • 只能包含:字母(a-z, A-Z)、数字(0-9)、下划线(_)
  • 区分大小写nameName 是两个不同变量。
  • 不能以数字开头:如 1var 是非法的。

建议(良好编程习惯)

  • 变量名应有意义:能反映其用途(如 user_agex 更好),方便其他人或后期阅读(后期维护)。
  • 不要使用 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)
    

函数名

  • 函数分为两类:
    1. 内置函数:Python内置定义的函数,如 print(), len(), type() 等。
    2. 自定义函数:由用户使用 deflambda 定义的函数。

二、注释

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 中,boolint 的子类:
    • True == 1True
    • False == 0True
  • 哪些值转为 False
    • None
    • False
    • 数字零: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 规则查找:

  1. Local(局部):函数内部定义的变量。
  2. Enclosing(嵌套):外层函数的变量(闭包)。
  3. Global(全局):模块级别定义的变量。
  4. 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):循环体