简介:68页Python基础语法合集是一份面向零基础入门者与有编程经验但需要快速切换至Python的读者的语法精讲资料,帮助建立扎实的语法主干。内容从标识符、保留字、缩进与多行语句开始,系统讲解变量赋值、五种标准数据类型及内建转换函数,并延伸至流程控制、函数定义、模块导入等常用语法,每个知识点都配有可运行的示例代码。资源包共1个文件,类型为PDF,压缩包大小约1.42MB,便于下载后离线阅读或打印对照学习。已有2048人学习浏览,适合自学入门、课堂辅助与日常速查。通过这68页,读者能掌握Python语法核心,理解缩进式代码块、面向对象基础与输入输出方式,为后续数据分析、Web开发或自动化脚本等方向打下语言基础。
1. 一份68页的python基础语法合集,值得花两小时翻完
先做个情景假设:你刚装好Python,对着命令行里的>>>提示符想写点东西,却发现连字符串拼接和列表切片都要现场搜。这份68页的python基础语法合集,就是把变量、数据类型、字符串、列表、元组这些最常用的语法按主题归拢在一起,每个知识点配一段示例代码。它不是从原理讲到生态的厚教材,更像一份语法地图:先讲标识符和保留字,再逐个拆解Numbers、String、List、Tuple四类内置类型,配合内置函数表与方法表,适合做入门通读,也适合写代码卡住时翻出来查。对零基础初学者,它是能从头跟到尾的入门读物;对写过其他语言的开发者,它最大的价值是把Python与常见语言不同的语法边界一次性说清。
2. 变量与数据类型:从赋值机制到类型转换的边界
PDF第二部分的核心内容围绕一个和多数语言不同的设定展开:Python里变量不需要声明类型,但必须先赋值才会被创建。这一条规则决定了后面所有类型操作的思路,也解释了为什么访问未赋值变量会直接抛NameError。
2.1 赋值机制:先赋值再使用,多变量同时赋值
在Python交互式环境里执行以下代码:
counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 name = "demo" # 字符串变量 a = b = c = 1 # 三个变量同时赋值为1 a, b, c = 1, 2, "python" # 按位置分别赋值逻辑说明:Python的=是引用绑定,把右边的对象绑定到左边的名字上,所以变量必须先赋值才存在。两种多变量赋值的语义不同:a = b = c = 1是链式赋值,三个名字指向同一个整数对象;a, b, c = 1, 2, "python"是元组拆包,右边先打包成元组再按位置展开。日常写交换变量时,直接用 a, b = b, a 即可,不需要第三个临时变量,这是拆包赋值的高频用法。
参数说明:变量名必须符合标识符规则,由字母、数字、下划线组成,不能以数字开头,且区分大小写。如果报SyntaxError且定位在变量名,优先检查是不是以数字开头或与保留字重名。Python 2里print是语句,Python 3里是函数,这份PDF里的print(x)写法在现在的环境直接照用即可。
del counter # 删除名字与整数对象的绑定关系del删除的是绑定而不是“变量本身”。Python的垃圾回收机制会在引用计数归零时自动回收对象,日常脚本很少主动用del,但处理大对象、想及时释放内存时会用到。PDF里也提到del语句可以用于删除列表项,但作用范围是同一个:解除名字与对象的联系。
2.2 数字类型:int、float、complex与转换函数表
PDF指出Numbers是不可改变的数据类型:当类型被改变时,会赋值给一个新的对象。这句话的实际含义是,对数字做运算不会修改原对象,而是生成新对象再重新绑定。int用于计数和索引,float用于连续量计算,complex用于复数场景。PDF里提到的long类型是Python 2的写法,Python 3中long已经与int合并,看到以L结尾的字面量按int处理即可。
类型转换是这本手册里最值得背下来的部分,下面是按参数特征分组后的转换函数表:
| 转换函数 | 作用 | 典型调用 |
|---|---|---|
| int(x [, base]) | 转整数,可带进制基数 | int("ff", 16) 得到 255 |
| float(x) | 转浮点数 | float("3.14") 得到 3.14 |
| complex(real [, imag]) | 创建复数 | complex(1, 2) 得到 1+2j |
| str(x) / repr(x) | 转字符串 / 转表达式字符串 | str(123) 得到 "123" |
| eval(str) | 计算字符串中的有效表达式 | eval("2 + 3") 得到 5 |
| tuple(s) / list(s) | 序列转元组 / 转列表 | list((1, 2)) 得到 [1, 2] |
| chr(x) / ord(x) | 整数转字符 / 字符转整数 | chr(65) 得到 'A',ord('A') 得到 65 |
| hex(x) / oct(x) | 转十六进制 / 八进制字符串 | hex(255) 得到 '0xff' |
逻辑说明:int(x, base)的base参数只对字符串转换有意义,对浮点数传base会直接报错。eval()功能强但安全边界也大,处理不可信输入时要小心。chr和ord是成对使用的,处理ASCII码或Unicode码点时高频出现。int("3.14")会报ValueError,因为int对字符串做的是解析,不允许小数点;float("3.14")可以正常解析。拿不准手里的值能不能转,先确认源类型,或者用try-except包一层。
2.3 数学函数与随机数:固定种子才能复现结果
PDF给出的数学函数来自math模块,使用前先import math。这些函数分三类:绝对值类(abs、fabs)、舍入类(ceil、floor、round)、对数与幂类(exp、log、log10、pow、sqrt),外加小数拆分用的modf。ceil(4.1)得5,floor(4.9)得4,这在计算分页数或配额时很常用。round(x, n)接受小数点后位数参数,但注意Python的round实现是银行家舍入:round(2.675, 2)得到2.67而不是2.68,因为2.675在二进制浮点里存的不是精确值。需要严格四舍五入时用Decimal模块而不是round,这是PDF不会写的隐含坑。
随机数函数常用于游戏抽奖、数据打乱和模拟实验:
| 函数 | 作用 | 典型调用 |
|---|---|---|
| choice(seq) | 随机选一个元素 | random.choice(range(10)) |
| randrange(start, stop, step) | 按步长取范围内的随机数 | random.randrange(0, 10, 2) |
| random() | 生成[0,1)浮点数 | random.random() |
| seed(x) | 固定随机种子 | random.seed(42) |
| shuffle(lst) | 原地打乱列表 | random.shuffle(list1) |
| uniform(x, y) | 生成[x,y]区间浮点数 | random.uniform(1, 10) |
逻辑说明:seed(x)的意义在于让随机序列可复现,对测试和对比实验很重要。我一般会在跑带随机性的脚本时固定种子,比如打乱数据前先random.seed(2024),这样每次运行顺序一致,复现问题才有后悔药。shuffle是原地操作,直接修改传入的列表,不返回新列表;需要保留原列表就先copy()一份再打乱。
三角函数部分同样来自math模块:sin、cos、tan接收弧度值,degrees()把弧度转角度,radians()相反。写图形或地理距离计算时注意单位,math.sin(math.pi / 2)结果是1.0,因为pi/2弧度就是90度。
3. 字符串操作:索引、转义与格式化是三个高频战场
字符串操作在Python里出现频率极高,真正让人翻车的是索引、转义和格式化三件事。PDF把字符串单独列为一章,编排顺序是:截取规则、转义字符、运算与格式化、内建函数表。这一章按同样的顺序展开,最后补上我自己筛选过的高频方法。
3.1 截取与索引:记住左闭右开区间
Python字符串从左至右索引从0开始,范围是(0, 长度-1);从右至左用负数索引,-1代表最后一个字符。示例:
a = 'hello' print(a[1]) # e,索引第2个字符 print(a[1:4]) # ell,截取索引1到3的字符 print(a[-1]) # o,最后一个字符 print(a[:]) # hello,整个字符串逻辑说明:切片语法是[起始:结束],结束位置不包含在内,所以a[1:4]取索引1、2、3三个字符,得到ell。这个左闭右开的设计贯穿所有Python序列类型,字符串、列表、元组都遵循同一规则。a[:]省略起止,表示整个序列,常用于复制字符串。字符串不可变,a[1] = 'E'会直接抛TypeError。
参数说明:索引越界报IndexError: string index out of range,切片越界却不报错,只会返回截断结果。a[1:100]返回'ello',a[100]直接报错。不确定边界时先用len(a)看长度。
3.2 转义字符与原始字符串:什么时候用r前缀
PDF给了一张转义字符表,高频的是以下几个:
| 转义字符 | 含义 | 说明 |
|---|---|---|
| \n | 换行 | 最常用 |
| \t | 横向制表符 | 对齐输出时用 |
| \ | 反斜杠本身 | 路径拼接时常见 |
| ' 和 " | 引号 | 字符串内嵌引号时用 |
| \r | 回车 | 配合\n使用 |
| \b | 退格 | 较少用 |
| \x0a | 十六进制换行 | 等价于\n |
转义的核心争议出现在文件路径和正则表达式里。Windows路径"C:\new\test.py"中的\n和\t会被解析成换行与制表符,路径直接坏掉。此时用原始字符串前缀r就能解决:print(r'\n')输出字面量\n而不是换行。原始字符串的含义是关闭转义解析,按字面输出,适合路径、正则表达式和模板片段。PDF示例是print(r'\n'),日常更多见的是正则场景,写r"\d+"比"\d+"少一层转义,可读性好很多。
三引号是处理多行文本的另一种方案,换行符会被真实保留:
hi = '''第一行 第二行''' print(hi)逻辑说明:三引号字符串直接排版多行,不需要数着\n拼接,也常被用作函数和类的docstring。它和hi = '第一行\n第二行'输出等价,内容变多时维护成本差别很大。PDF提到三个双引号和三个单引号作用一样,这点准确,行业惯例是用双引号写docstring。
3.3 格式化:%运算符、format与f-string怎么选
PDF的字符串格式化小节讲的是%运算符,这是Python 2时代的主流方式:
print("My name is %s and weight is %d kg!" % ("demo", 21)) # 输出:My name is demo and weight is 21 kg!格式符号对应关系:%s字符串、%d整数、%f浮点数、%x十六进制、%e科学计数法。%d传入浮点数会报TypeError,做输出前要确认类型,或直接改成%.1f。多个参数用括号包成元组按位置匹配,单个参数可以省略括号。同为PDF配套内容的print(x, end='')不换行输出,本质也是格式化场景的一部分,只是通过end参数控制结尾字符。
现在更推荐的做法是str.format()或f-string,同一个例子改写为:
name = "demo" print(f"My name is {name} and weight is {21} kg!")逻辑说明:f-string以f开头,把{变量名}直接嵌入字符串,运行时替换值。与%相比,f-string不需要维护占位符和参数列表的位置对应,也不存在类型错位问题。PDF停留在%阶段是历史原因,理解%s、%d的含义有助于读懂老代码,新代码直接用f-string就好。
3.4 常用字符串方法:先记这十个
PDF列了三十多个字符串方法,不需要全背。按出现频率,先记十个:count计数、find查找索引、replace替换、split切分、strip去首尾空格、join拼接、lower/upper大小写、startswith/endswith前缀后缀判断、title标题化。
text = " python基础语法 " print(text.strip()) # 去首尾空格 print(text.replace("python", "Python")) # 替换 print(text.split()) # 按空白拆成列表 print("-".join(["a", "b", "c"])) # a-b-c print(text.upper()) # 全大写逻辑说明:split和join成对出现,split把字符串变列表,join把列表变字符串,注意join的写法是分隔符在前、列表在后。strip默认去除空白字符,也可以传参指定要去掉的字符。这些方法有一个共同特征:都返回新字符串,不修改原字符串,因为字符串本身不可变。
4. 列表与元组:可变与不可变的边界决定代码走向
PDF把List和Tuple放在一起讲是有道理的:两者都是有序序列,都支持索引和切片,区别只有一条——列表可变,元组不可变。这条边界影响增删改查的所有操作,也关系着数据能否被安全传递。
4.1 列表:可变序列的增删改查与引用陷阱
创建列表用方括号,列表中可以混放数字、字符串甚至其他列表。基本操作:
list1 = [1, 2, 3, 4, 5] list1.append(6) # 末尾追加,list1变为[1,2,3,4,5,6] list1[2] = 100 # 重新赋值索引2的元素 del list1[2] # 删除索引2的元素 pop_item = list1.pop() # 弹出末尾元素6并返回逻辑说明:append是原地修改,不返回新列表;del通过索引删除,语法是del列表[索引];pop返回被弹出的元素。选择依据是是否需要保留被删元素:不要返回值用del或remove,需要返回值用pop。
脚本操作符的核心是四类:len取长度、+组合、*重复、in成员判断:
len([1, 2, 3]) # 3 [1, 2, 3] + [4, 5, 6] # [1,2,3,4,5,6] ['Hi!'] * 4 # 重复4次 3 in [1, 2, 3] # True列表内置方法里按使用频率排:append、extend、insert、remove、pop、index、count、sort、reverse。这里特别说明extend和append的区别:
a = [1, 2] a.append([3, 4]) # [1, 2, [3, 4]],嵌套列表 b = [1, 2] b.extend([3, 4]) # [1, 2, 3, 4],展开追加逻辑说明:append把参数当成一个整体塞进列表,extend把参数视为可迭代对象逐个追加。传错时列表结构会完全不一样,调试看到多一层嵌套,先检查是不是用成了append。sort默认升序,可传reverse=True转降序;sorted返回新列表不修改原列表。
列表还有一个容易踩的引用陷阱:list2 = list1并不会复制列表,只是给同一个列表对象多加了一个名字。此时对list2做append或修改元素,list1同步变化。要真正复制,用list1[:]切片或list1.copy()。嵌套列表时浅拷贝只复制外层,内层列表仍共享,这时需要copy模块的deepcopy:
| 写法 | 结果 | 适用场景 |
|---|---|---|
| list2 = list1 | 绑定同一对象 | 只是想换个名字 |
| list2 = list1[:] | 浅拷贝 | 一维列表复制 |
| list2 = list1.copy() | 浅拷贝 | 同上 |
| copy.deepcopy(list1) | 深拷贝 | 嵌套列表复制 |
4.2 元组:不可变序列与单元素陷阱
元组用圆括号标识,元素不可二次赋值。创建空元组用tuple(),创建单个元素的元组必须在元素后加逗号:
t1 = () # 空元组 t2 = (42,) # 必须加逗号,否则是整数42 t3 = (1, 2, 3) # 三个元素的元组逻辑说明:写成t = (42)时,Python把它当成括号内的表达式42,类型是int,不是元组。这是元组最经典的翻车点,PDF专门强调“必须要在元素后加逗号”。判断一个写法是不是元组,看赋值右侧是否有逗号。任意无符号的对象以逗号隔开也默认为元组,所以a, b = 1, 2这种拆包赋值右侧本质上是元组。
元组的不可变性体现在两个维度:不能修改单个元素,也不能删除单个元素,但可以整体删除:
del t3 # 删除整个元组参数说明:元组可以参与+和*运算生成新元组,t3 + (4, 5)得到(1,2,3,4,5),t3 * 2得到(1,2,3,1,2,3)。这容易让人误以为元组可修改,实际上每次运算生成新对象,原元组没有变化。需要频繁增删的数据不要用元组,性能上反而吃亏。
4.3 列表与元组互转:先保护再修改的惯用法
PDF给出的转换函数里有list(s)和tuple(s),二者可以互转:
t = (1, 2, 3) lst = list(t) # 元组转列表 lst.append(4) t2 = tuple(lst) # 列表转元组 print(t2) # (1, 2, 3, 4)逻辑说明:这个互转模式适合“先保护后修改”的场景:先用元组保存不应变动的配置,需要调整时转列表操作,确认后再转回元组。转换开销很小,但不要在循环里反复做类型转换。列表推导式如[x * 2 for x in range(5)]也是操作列表的高频写法,虽然PDF没有展开,但它是列表方法表的自然延伸,读到这里时值得顺手实践。
5. 缩进、流程控制与函数:基础语法的避坑记录
流程控制、函数与模块是PDF在变量类型之后的主线内容,也是初学者报错最密集的区域。下面按主题整理原理与最小写法,最后一节集中写几组现象、原因与解决。
5.1 缩进与多行语句:代码块由缩进控制,不是大括号
PDF强调“Python的缩进要求非常严格,必须严格对齐”,因为Python的代码块不由大括号控制,而由缩进控制。同一代码块里的语句必须处于同一缩进层级,混用空格和Tab会直接报IndentationError。主流编辑器默认把Tab展开成4个空格,但从别处复制代码时容易带进混用的缩进,解决办法是显示空白字符后统一替换。
多行语句有两种写法:行尾加反斜杠,或者利用括号自动续行:
total = item_one + \ item_two + \ item_three total2 = (item_one + item_two + item_three)逻辑说明:反斜杠续行要求反斜杠是行内最后一个字符,后面不能有空格,否则报语法错误。用括号包起来的表达式不需要反斜杠,这是更推荐的方式,因为括号内的缩进自由。同一行放多条语句可以用分号分隔,但这个写法可读性差,只在交互式命令行里图省事时用。
5.2 流程控制的坑:if条件、for循环与while的常见报错
流程控制包括条件语句、循环语句和异常处理。最小可用写法:
score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格") for i in range(3): print(i) # 输出 0 1 2 while score > 0: score -= 10逻辑说明:if分支在条件表达式后必须写冒号,下一行缩进。elif取代其他语言里的else if,一个if后可以跟多个elif,最后用else兜底。range(3)生成[0,3)整数序列,左闭右开规则与切片一致,所以循环三次输出0、1、2。while与break/continue配合控制循环走向。最常见的报错是if行尾漏写冒号,错误定位在if那一行,逐个检查关键字行尾即可。另一个坑是range的边界:range(1, 3)只迭代1和2,不包含3,忘记这个规则会少一轮循环。
5.3 函数与模块:def、return与import的边界
函数用def定义,参数按位置传递,return返回结果,没有return时默认返回None。模块用import导入,from-import是另一种导入方式。最小示例:
def add(a, b): """两数相加""" return a + b import math print(math.sqrt(16)) # 4.0 from math import sqrt print(sqrt(16)) # 4.0逻辑说明:函数定义以def 函数名(参数):开始,函数体必须缩进。docstring写在函数体第一行,可以用print(add.doc)查看。import math导入模块后通过math.sqrt调用;from math import sqrt直接导入函数,调用时不写模块名前缀。两种方式各有边界:from方式代码短但可能出现同名冲突,import方式更明确。小脚本用from,大项目用import更稳妥。
5.4 五组踩坑记录:现象、原因与解决
下面五条来自实际写Python脚本时遇到的报错,每条按现象、原因、解决排列。
第一组:缩进混用Tab与空格 现象:从PDF或网页复制代码到编辑器,运行报IndentationError: inconsistent use of tabs and spaces in indentation。 原因:粘贴过程中把Tab和空格混进了同一缩进层级,Python不允许混合缩进。 解决:编辑器里全选统一切换为“4个空格”,或在命令行用python -m tabnanny 文件名.py定位混用行。
第二组:单个元素的元组被当成普通值 现象:t = (42)之后type(t)返回int,希望得到的tuple没有出现。 原因:圆括号在没有逗号时是表达式分组符,不构造元组。 解决:单元素元组写成(42,),记住判断标准是“有没有逗号”。
第三组:%d格式化传入浮点数报错 现象:print("价格:%d" % 3.14)报TypeError: %d format: a number is required, not float。 原因:%d只接受整数,浮点数被拒。 解决:改成%.2f保留两位小数,先round或int转类型,或者改用f-string自动处理类型转换。
第四组:if分支漏写冒号 现象:运行报SyntaxError: invalid syntax,错误行定位在if语句。 原因:Python要求在条件表达式后写冒号,缩进只是代码块的组成部分。 解决:检查if/elif/else/for/while/try/except行尾是否都有冒号。
第五组:del误删整个列表 现象:本想在函数里清空列表,执行del list1后变量完全消失,再访问报NameError。 原因:del删除的是名字与对象的绑定,不是清空列表内容。 解决:要清空列表用list1.clear()或list1[:] = [];del只用于真正删除变量本身。
6. 把68页手册变成速查卡:三个验证习惯
PDF的分章结构很适合做自查:变量与类型一章、字符串一章、列表元组一章、控制流函数模块一章。我的建议是不要从头到尾精读完才动手,而是每读一小节,开一个交互式会话把示例敲一遍,再改两个参数看输出变化,然后把这组验证过的结论用自己的话记在一个备忘文件里。
6.1 type()、dir()、help()三连验证
具体做法是固定用三个内置函数做验证。type()看对象类型,dir()看对象有哪些属性和方法,help()看函数文档。拿到PDF里任何一个不熟悉的内置方法,都可以做三连验证。比如读完replace方法的说明后,敲dir("abc")会看到replace就在方法列表里;再敲help(str.replace),会出现完整的参数签名和最简示例。这套组合拳比逐字背列表高效很多,因为你在“用”而不是在“读”。
我还会把PDF里的方法表精简成自己的速查卡,筛掉不常用的,只留高频项,比如字符串只留count、find、replace、split、strip、join、lower、upper,列表只留append、extend、pop、sort。筛选依据就是最近写的代码里用到了哪些。PDF的68页是完整参考答案,速查卡是真正进脑子那部分。
有个教训可以分享:我最早学Python时,PDF从头翻到尾,以为自己都记住了,结果真正写脚本时连列表切片边界都要回头查。后来改成“读一节、敲一节、改一个参数”的节奏,印象立刻不一样了。从那以后我每次拿到新语言的语法手册,都强制自己先跑一遍type、dir、help三连验证,再往后翻下一页。希望帮到你。
本文还有配套的精品资源,点击获取