跳到主要内容
Python 核心语法详解:变量、流程控制、函数与数据结构 | 极客日志
Python 算法
Python 核心语法详解:变量、流程控制、函数与数据结构 Python 核心语法涵盖变量与数据类型定义、运算符优先级、输入输出交互、流程控制语句(条件判断与循环)、函数定义与调用、常用数据结构(列表、元组、字典)操作以及文件持久化存储方法。内容包含标准库模块导入使用及第三方库安装流程,适合编程初学者系统掌握 Python 基础语法与代码编写规范。
CloudNative 发布于 2026/3/25 更新于 2026/4/23 2 浏览Python 作为一门优雅且强大的编程语言,凭借易上手、用途广的特点,成为很多人入门编程的首选。无论是数据分析、人工智能,还是 Web 开发、自动化脚本,Python 都能胜任。扎实的基础语法是关键,本文将结合系统的语法知识,从基础运算到数据持久化,带你掌握 Python 核心语法。
变量与数据类型:程序的原材料仓库
变量用来装不同类型的数据;数据类型则是标签,告诉我们里面装的是什么。类型系统对变量进行归类,相同类型的变量往往具有类似的特性和使用规则。
Python 的变量不用手动指定数据类型,赋值后会自动识别,即动态类型特性。对于中小型程序,可以大大节约代码量;对于大型程序,则提高了模块之间的交互成本。
常见数据类型及操作
数据类型 定义方式 核心操作 适用场景 整数(int) num = 10 加减乘除、取余(%)、整除(//) 计数、编号等整数场景 浮点数(float) price = 9.9 同整数,注意精度问题 金额、重量等小数场景 字符串(str) name = "Python" 拼接(+)、切片([0:2])、替换(replace) 文本存储与处理 列表(list) nums = [1,2,3] 增(append)、删(pop)、改(nums[0]=0) 存储多个可变数据 元组(tuple) info = ("Tom",20) 只能查,不能改 存储固定不变的数据(如坐标) 字典(dict) student = {"name":"Tom","age":20} 按键取值(student["name"])、增删键值对 存储键值对应的数据(如个人信息) 集合(set) s = {1,2,3} 去重、交集(&)、并集( )
在 Python 中,单引号构成的字符串和双引号构成的字符串没有区别,'hello' 和 "hello" 是完全等价的。
关键易错点解析
可变 vs 不可变类型 :列表、字典、集合是可变类型(能修改内部数据),整数、浮点数、字符串、元组是不可变类型(修改会生成新对象)。错误示例:s = "hello"; s[0] = "H"(报错,字符串不可变);正确示例:s = "hello"; s = "Hello"(重新赋值生成新字符串)。
列表与元组的区别 :元组用小括号,列表用中括号;元组不能修改,列表可以。新手常犯把元组当成列表修改,导致报错。
字典的键要求 :必须是不可变类型(如字符串、整数),不能用列表当键。错误示例:dict = {[1]:"a"}(报错);正确示例:dict = {(1):"a"}(用元组当键)。
运算符:程序的计算器 + 判断器
运算符是实现数据运算和条件判断的核心工具。重点记清优先级和实用技巧。
核心运算符分类
算术运算符 :+(加)、-(减)、*(乘)、/(除)、%(取余)、//(整除)、**(幂运算)。实例:print(7//3) 输出 2;print(2**3) 输出 8。
除零异常 :/、//、%的除数不能为 0,否则会报错(ZeroDivisionError)。
%求余的正负 :结果的正负和被除数一致(比如 7%3=1, , )。
-7%3=2
7%-3=-2
比较运算符 :==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。比较结果是布尔值(True/False)。
逻辑运算符 :and(与)、or(或)、not(非)。短路特性:and 前为 False 则不执行后面;or 前为 True 则不执行后面。
赋值运算符 :=、+=、-=、*=、/=(简化运算)。
成员运算符 :in(在...内)、not in(不在...内)。优先级避坑:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符。不确定时加括号,比如 (3+2)*4 比 3+2*4 更清晰。
⚠️ 注意:Python 没有 ++ 和 -- 运算符,如果需要自增 / 自减,用 a += 1 或 a -= 1。
注释:代码的笔记本
单行注释 :#开头。适合简短解释,#后面的内容都会被视为注释。
多行注释 :三引号包裹。适合长段解释(比如函数功能、文件说明),用 """ 或 ''' 包裹。
num = 10
"""这是多行注释的第一行
这是多行注释的第二行
常用于函数/文件的开头,说明功能
"""
def calc_sum (a, b ):
'''计算两个数的和
参数:a -> 第一个数,b -> 第二个数
返回值:a + b 的结果
'''
return a + b
输入输出:程序的交互窗口 程序需要和用户交互:用户输入数据,程序输出结果。Python 中最基础的交互方式是控制台输入输出。
输出:print 函数 print() 是 Python 内置函数,用于把内容输出到控制台。
print ("Hello Python" )
print (10 + 20 )
print (avg)
name = "张三"
age = 20
print ("姓名:" , name, "年龄:" , age)
格式化输出:f-string 如果想让输出更美观,可以用 f-string:在字符串前加 f,用 {变量/表达式} 嵌入内容。
name = "张三"
age = 20
score = 89.5
print (f"姓名:{name} ,年龄:{age} " )
print (f"平均分:{score} ,总分:{score * 3 } " )
输入:input() 函数 input() 函数用于读取用户在控制台输入的内容,返回值永远是字符串类型(即使输入的是数字,也需要手动转换类型)。
name = input ("请输入你的姓名:" )
print (f"你好,{name} !" )
age = input ("请输入你的年龄:" )
age = int (age)
print (f"明年你{age + 1 } 岁" )
score = float (input ("请输入你的成绩:" ))
案例:输入 4 个小数,求平均分 score1 = float (input ("请输入第 1 个分数:" ))
score2 = float (input ("请输入第 2 个分数:" ))
score3 = float (input ("请输入第 3 个分数:" ))
score4 = float (input ("请输入第 4 个分数:" ))
avg = (score1 + score2 + score3 + score4) / 4
print (f"4 个分数的平均分为:{avg} " )
流程控制:让程序做选择、重复做 默认情况下,程序是顺序执行的。实际场景中,我们需要程序根据条件做选择或重复做一件事,这就需要流程控制语句。
条件语句:根据条件做选择 条件语句用 if、if-else、if-elif-else 表示'如果…就…否则…'的逻辑,缩进是关键(Python 用缩进表示代码块,通常是 4 个空格)。
if 条件表达式:
代码块(条件为 True 时执行)
if 条件表达式:
代码块 1
else :
代码块 2
if 条件 1 :
代码块 1
elif 条件 2 :
代码块 2
else :
代码块 n
⚠️ 注意:elif 是'else if'的缩写,不能写成 else if;且条件是互斥的,只要有一个条件成立,后续条件就不再判断。
条件语句嵌套 year = 2024
if year % 100 == 0 :
if year % 400 == 0 :
print (f"{year} 是闰年" )
else :
print (f"{year} 是平年" )
else :
if year % 4 == 0 :
print (f"{year} 是闰年" )
else :
print (f"{year} 是平年" )
空语句 pass 如果条件语句的代码块暂时没有内容,需要用 pass 占位。
score = 70
if score >= 60 :
pass
else :
print ("需要补考" )
循环语句:重复执行代码 循环语句用于重复执行一段代码,Python 中常用 while 循环和 for 循环。
while 循环:条件满足就循环 sum_result = 0
num = 1
while num <= 100 :
sum_result += num
num += 1
print (f"1~100 的和为:{sum_result} " )
⚠️ 注意:如果循环体中没有让条件变为 False 的语句,循环会无限执行(死循环)。
for 循环:遍历可迭代对象 for 循环主要用于遍历可迭代对象(比如列表、元组、字符串,或用 range() 生成的序列)。
关键:range() 函数 range() 用于生成一个整数序列,常用三种写法:
range(n):生成 0 ~ n-1 的序列。
range(start, end):生成 start ~ end-1 的序列(前闭后开)。
range(start, end, step):生成 start ~ end-1 的序列,步长为 step。
for i in range (1 , 11 ):
print (i)
sum_result = 0
for i in range (1 , 101 ):
sum_result += i
print (f"1~100 的和为:{sum_result} " )
s = "Python"
for char in s:
print (char)
循环控制:break 和 continue
break:结束整个循环,跳出循环体。
continue:结束本次循环,直接进入下一次循环。
for i in range (1 , 6 ):
if i == 3 :
print (f"第{i} 个包子有虫,不吃了!" )
break
print (f"吃完第{i} 个包子" )
for i in range (1 , 6 ):
if i == 3 :
print (f"第{i} 个包子有虫,跳过!" )
continue
print (f"吃完第{i} 个包子" )
函数:代码的复用神器 如果一段代码需要重复使用,每次都复制粘贴会很麻烦。这时候就需要函数:把重复的代码封装起来,需要时直接调用。
函数的语法:定义与调用 def 函数名 (形参列表):
函数体(需要执行的代码)
[return 返回值]
def:关键字,用于声明函数。
函数名:遵循变量名规则,建议用有意义的单词。
形参列表:函数的输入,多个参数用逗号分隔,可空。
函数体:函数的核心逻辑,需要缩进。
return:函数的输出,执行到 return 时函数结束,返回值给调用者。
def add (x, y ):
result = x + y
return result
total = add(10 , 20 )
print (total)
⚠️ 注意:函数必须先定义,后调用;函数定义时,函数体不会执行;只有调用时才会执行。
函数的参数:灵活传递数据
形参与实参的匹配
参数默认值 可以给形参设置默认值——调用时如果不传该参数,就用默认值;传了就用实参值。有默认值的参数必须放在无默认值参数的后面。
def add (x, y, debug=False ):
if debug:
print (f"计算{x} + {y} " )
return x + y
print (add(10 , 20 ))
print (add(10 , 20 , True ))
关键字参数 默认情况下,实参是按位置传给形参。但可以用关键字参数显式指定实参传给哪个形参,顺序可以任意。
def test (x, y ):
print (f"x={x} , y={y} " )
test(10 , 20 )
test(y=20 , x=10 )
函数的返回值:输出结果
一个函数可以有多个 return 语句,但执行到第一个 return 时函数就会结束。
一个函数可以返回多个值,用逗号分隔,接收时用多个变量(或元组)接收。
如果没有 return,函数默认返回 None。
def get_point ():
x = 10
y = 20
return x, y
x, y = get_point()
print (x, y)
变量作用域:变量的有效范围
局部变量 :函数内部定义的变量,只能在函数内部使用,出了函数就失效。
全局变量 :函数外部定义的变量,可以在所有函数外部使用。函数内部要修改全局变量,需要用 global 关键字声明。
num = 10
def test ():
global num
num = 20
test()
print (num)
⚠️ 注意:if、for、while 等语句块不会产生作用域——在这些语句块中定义的变量,外部也能使用。
函数的设计原则
单一职责 :一个函数只做一件事。
逻辑与交互分离 :函数内部尽量不做控制台输入输出。
注释清晰 :用文档字符串说明函数功能、参数、返回值。
def calc_sum (a, b ):
"""计算区间[a, b]内所有整数的和(包含 a 和 b)
参数:
a: int,区间的起始整数
b: int,区间的结束整数(需大于等于 a)
返回值:int,区间[a, b]的和
"""
if b < a:
raise ValueError("结束值 b 不能小于起始值 a" )
sum_result = 0
for i in range (a, b+1 ):
sum_result += i
return sum_result
列表和元组:批量存储数据的容器 列表和元组是 Python 中用于批量表示序列型数据的核心结构,二者功能相似但存在'可变/不可变'的关键差异。
列表(List):可变的容器 列表是一种可修改的序列结构,用于批量保存任意类型的数据。
创建列表 alist = [1 , 'hello' , True ]
alist = []
alist = list ()
列表的核心操作
访问与修改 :下标从 0 开始计数,也支持负数下标。用 len() 获取长度。
切片操作 :通过 [start:end:step] 获取连续的子列表,规则为前闭后开区间。
遍历列表 :提供 while 循环、按下标遍历、直接遍历元素三种方式。
增删操作 :
append(元素):在列表末尾添加。
extend(列表):将另一个列表的元素追加到当前列表。
remove(值):按元素值删除。
pop():删除并返回列表末尾元素。
insert(下标,元素):在指定下标位置插入。
查找元素 :index(值) 返回下标;in 判断元素是否在列表中。
alist = [1 , 2 , 3 , 4 ]
alist.append('hello' )
alist.extend([5 , 6 ])
alist.remove(2 )
print (alist.index(3 ))
print (2 in alist)
元组(Tuple):不可变的容器 元组与列表结构相似,但创建后不可修改。当数据集需要'只读保护'时,优先使用元组。
atuple = (1 , 'hello' , True )
single_tuple = (1 ,)
atuple = ()
元组不支持修改操作(如 append、item assignment),但支持读取、遍历、切片等操作。元组可作为字典的 key,因为它是不可变可哈希的。
字典:键值对映射的查询表 字典是 Python 中用于存储键值对(key-value)的结构,类似于 Java 的哈希,核心作用是'通过 key 快速查找 value'。
key 是唯一的 ,value 可重复且支持任意类型。
创建字典 :用 {} 表示,key 与 value 之间用 : 分隔。
student = {
'id' : 1 ,
'name' : 'zhangsan' ,
'score' : 80
}
核心操作 :
查找 value:用 [key] 获取,key 不存在则报错(KeyError);用 in 判断 key 是否存在。
新增/修改:通过 [key] = value 实现。
删除:用 pop(key) 删除指定 key 的键值对。
遍历:遍历 key,或通过 keys()、values()、items() 方法。
student['score' ] = 90
student.pop('score' )
for key, value in student.items():
print (f"{key} : {value} " )
合法的 key 类型 :必须是可哈希对象(如 int、str、bool、tuple),不支持 list、dict 等可变类型。
文件:数据持久化的硬盘容器 变量存储的数据在程序重启后会丢失,而文件能将数据持久化存储到硬盘。
文件路径
绝对路径 :从盘符开始的完整路径,如 D:/test.txt。
相对路径 :以当前程序所在目录为基准的路径。
文件操作流程:打开 → 读写 → 关闭
打开文件:open() 函数
f = open ('D:/test.txt' , 'r' , encoding='utf-8' )
核心参数 :
文件路径:字符串,绝对路径或相对路径。
打开方式:r(只读)、w(只写,清空原有内容)、a(追加)。
encoding:指定文件编码(处理中文必须设置)。
读写文件
写文件 :用 write(内容) 方法写入,内容必须是字符串。
读文件 :
read(n):读取 n 个字符。
for 循环读行:逐行读取。
readlines():读取所有行,返回列表。
关闭文件:close() 方法 必须用 close() 方法关闭文件,否则会导致文件句柄泄漏或数据未写入硬盘。
上下文管理器:with 语句 推荐用 with 语句打开文件,无需手动调用 close(),with 块执行完毕后会自动关闭文件。
with open ('D:/test.txt' , 'r' , encoding='utf-8' ) as f:
content = f.read()
print (content)
标准库:Python 自带的工具箱 标准库是 Python 安装后默认自带的库,无需额外安装即可直接使用。其覆盖场景极广,涵盖内置函数、文本处理、时间日期、数学计算、文件目录、数据存储、加密解密、操作系统相关、并发编程、网络编程、多媒体/图形化界面等。
标准库的使用:import 导入模块 标准库的模块本质是独立的 .py 文件,需通过 import [模块名] 导入当前代码文件后使用。
案例 1:日期计算(datetime 模块) import datetime
date1 = datetime.datetime(2012 , 2 , 14 )
date2 = datetime.datetime(2022 , 7 , 12 )
print (date2 - date1)
案例 2:字符串操作(内置 str 类型) 字符串是 Python 内置类型,其方法无需导入额外模块,可直接使用。常用方法包括 replace、strip、split、join、lower、upper 等。
案例 3:文件查找工具(os 模块) 需求:指定路径和关键词,查找路径下所有文件名含关键词的文件。
import os
inputPath = input ('请输入待搜索路径:' )
pattern = input ('请输入待搜索关键词:' )
for dirpath, dirnames, filenames in os.walk(inputPath):
for f in filenames:
if pattern in f:
print (f'{dirpath} /{f} ' )
第三方库:Python 生态的扩展包 第三方库是开发者或组织编写并发布的库,需额外安装才能使用。其覆盖场景远超标准库,是 Python 生态强大的核心原因。
第三方库的核心使用流程 使用第三方库需遵循'找库 → 安装 → 导入使用'三步流程。
找库 :确定合适的第三方库。
安装 :用 pip 管理库。基本命令:pip install [库名]。
导入使用 :与标准库用法一致,通过 import [库名] 导入模块。
第三方库实战案例
案例 1:生成二维码(qrcode 库) import qrcode
img = qrcode.make('请关注中草药' )
img.save('qrcode.png' )
案例 2:操作 Excel(xlrd 库) 需求:读取 Excel 文件,计算某班级学生的平均分。
import xlrd
xlsx = xlrd.open_workbook('d:/test.xlsx' )
table = xlsx.sheet_by_index(0 )
nrows = table.nrows
count = 0
total = 0
for i in range (1 , nrows):
classId = table.cell_value(i, 1 )
if classId == 101 :
score = table.cell_value(i, 2 )
total += score
count += 1
print (f'101 班平均分:{total / count} ' )
案例 3:键盘监听(pynput + playsound 库) 需求:监听键盘按键,每按 10 次自动播放音频,鼓励开发者。
import pynput
from playsound import playsound
注:本文不涉及 Python 及 PyCharm 安装教程,请自行查阅官网资料。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online