跳到主要内容
Python 核心语法详解:变量、流程控制与函数实战 | 极客日志
Python AI 算法
Python 核心语法详解:变量、流程控制与函数实战 Python 核心语法涵盖变量类型、运算符、输入输出、流程控制、函数定义及作用域、列表元组字典操作、文件读写及标准库使用。文章通过代码示例讲解动态类型特性、条件判断、循环结构、参数传递、递归调用等关键知识点,并演示 datetime、os、xlrd 等模块的实际应用,帮助读者掌握编程基础与数据持久化方法。
雪落无声 发布于 2026/3/27 更新于 2026/6/11 19 浏览Python 核心语法详解
本文不做 Python 以及 PyCharm 安装的详细教程,请大家自行查阅资料或到官网下载。
Python 作为一门优雅且强大的编程语言,凭借易上手、用途广的特点,成为很多人入门编程的首选。无论是数据分析、人工智能,还是 Web 开发、自动化脚本,Python 都能胜任。但想要用好 Python,扎实的基础语法是关键。本文将结合系统的语法知识,从基础运算到数据持久化的文件操作,带你一站式吃透 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(2 的 3 次方)。
除零异常 :/、//、%的除数不能为 0,否则会报错(ZeroDivisionError)。
%求余的正负 :结果的正负和被除数一致(比如 7%3=1,-7%3=2,7%-3=-2)。
比较运算符 :==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。注意:比较结果是布尔值(True/False)。
逻辑运算符 :and(与)、or(或)、not(非)。短路特性:and 前为 False 则不执行后面;or 前为 True 则不执行后面。
赋值运算符 :=、+=、-=、*=、/=(简化运算)。
成员运算符 :in(在...内)、not in(不在...内)。
链式赋值 :同时给多个变量赋同一个值。
多元赋值 :同时给多个变量赋不同值(常用于交换变量)。
a = b = 10
print (a, b)
x = 10
y = 20
x, y = y, x
print (x, y)
⚠️ 注意:Python 没有 ++ 和 -- 运算符(比如 a++、a--),如果需要自增 / 自减,用 a += 1 或 a -= 1。
优先级避坑:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符。不确定时加括号,比如 (3+2)*4 比 3+2*4 更清晰,避免出错。
注释:代码的笔记本
单行注释 :#开头。适合简短解释,#后面的内容都会被视为注释。
多行注释 :三引号包裹。适合长段解释(比如函数功能、文件说明),用 """ 或 ''' 包裹。
num = 10
""" 这是多行注释的第一行
这是多行注释的第二行
常用于函数/文件的开头,说明功能
"""
def calc_sum (a, b ):
''' 计算两个数的和
参数:a -> 第一个数,b -> 第二个数
返回值:a + b 的结果
'''
return a + b
输入输出:程序的交互窗口 程序需要和用户交互:用户输入数据(比如成绩),程序输出结果(比如平均分)。Python 中最基础的交互方式是控制台输入输出。
print() 是 Python 内置函数,用于把内容输出到控制台。
print ("Hello Python" )
print (10 + 20 )
print (avg)
name = "张三"
age = 20
print ("姓名:" , name, "年龄:" , age)
如果想让输出更美观,可以用 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 ("请输入你的成绩:" ))
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 语句:单条件
if-else 语句:二选一
if-elif-else 语句:多条件
注意:elif 是'else if'的缩写,不能写成 else if(会报错);且条件是互斥的,只要有一个条件成立,后续条件就不再判断。
条件语句嵌套
条件语句内部可以再写条件语句,实现更复杂的逻辑。
示例:判断年份是否为闰年(闰年规则:能被 400 整除,或能被 4 整除但不能被 100 整除)。
空语句 pass
如果条件语句的代码块暂时没有内容,需要用 pass 占位(否则会报错)——pass 表示'什么都不做'。
循环语句用于'重复执行一段代码',Python 中常用 while 循环和 for 循环。
while 循环:条件满足就循环
注意:循环体中要有让条件变为 False 的语句,否则会无限循环。
for 循环:遍历可迭代对象
for 循环比 while 更简洁,主要用于'遍历可迭代对象'(比如列表、元组、字符串,或用 range() 生成的序列)。
关键:range() 函数
range(n):生成 0 ~ n-1 的序列。
range(start, end):生成 start ~ end-1 的序列(前闭后开)。
range(start, end, step):生成 start ~ end-1 的序列,步长为 step。
循环控制:break 和 continue
break:结束整个循环,跳出循环体。
continue:结束本次循环,直接进入下一次循环。
函数:代码的复用神器 如果一段代码需要重复使用,每次都复制粘贴会很麻烦。这时候就需要函数:把重复的代码封装起来,需要时直接调用,不用重复写。
函数就像一个工厂:输入原材料(参数),经过加工(函数体),输出产品(返回值)。它的核心作用是代码复用和逻辑封装。
定义函数
def 函数名 (形参列表):
函数体(需要执行的代码)
[return 返回值]
def:关键字,用于声明函数。
函数名:遵循变量名规则,建议用有意义的单词。
形参列表:函数的输入,多个参数用逗号分隔,可空。
函数体:函数的核心逻辑,需要缩进。
return:函数的输出,执行到 return 时函数结束,返回值给调用者。
调用函数
实参列表:传给函数的实际值,个数和形参一致。
函数调用时,实参会赋值给形参。
形参与实参的匹配 :调用函数时,实参的个数必须和形参一致。
参数默认值 :可以给形参设置默认值。有默认值的参数必须放在无默认值参数的后面。
关键字参数 :显式指定实参传给哪个形参,顺序可以任意。
函数的返回值用 return 语句指定,有以下特性:
一个函数可以有多个 return 语句,但执行到第一个 return 时函数就会结束。
一个函数可以返回多个值,用逗号分隔,接收时用多个变量(或元组)接收。
如果没有 return,函数默认返回 None(表示无值)。
变量不是在所有地方都能使用,它的有效范围称为作用域。Python 中变量作用域主要分两种:
局部变量 :函数内部定义的变量,只能在函数内部使用,出了函数就失效。
全局变量 :函数外部定义的变量,可以在所有函数外部使用。函数内部要修改全局变量,需要用 global 关键字声明。
嵌套调用 :函数内部调用其他函数。
递归调用 :函数内部调用自己。核心是把大问题拆成小问题,需要满足两个条件:存在递归结束条件;每次递归时,参数要逼近结束条件。
单一职责 :一个函数只做一件事。
逻辑与交互分离 :函数内部尽量不做控制台输入输出。
注释清晰 :用文档字符串说明函数功能、参数、返回值。
列表和元组:批量存储数据的容器 列表和元组是 Python 中用于批量表示序列型数据的核心结构,二者功能相似但存在'可变 / 不可变'的关键差异。
列表是什么? 一种可修改的序列结构,用于批量保存任意类型的数据。
创建列表 :带初始值的列表([]中填写元素);空列表创建([] 或 list())。
列表的核心操作
访问与修改 :下标(索引)操作,下标从 0 开始计数,也支持负数下标。用 len() 函数获取列表长度。
切片操作 :批量获取子列表,通过 [start:end:step] 获取连续的子列表,规则为前闭后开区间。
遍历列表 :提供 while 循环遍历、按下标遍历、直接遍历元素三种方式。
列表的增删操作 :extend() 追加、+ 拼接、remove() 按值删除、pop() 删除末尾或指定下标、insert() 插入、append() 尾插。
查找元素 :index() 返回下标、in 判断是否存在。
元组是什么? 与列表结构相似,但创建后不可修改。当数据集需要只读保护时,优先使用元组。
创建元组 :用 () 表示。单个元素的元组必须加逗号(避免与括号表达式混淆)。
元组的操作限制与支持的操作
支持的操作:仅读操作(+ 拼接、遍历、in、index()、下标访问、切片)。
不支持的操作:所有修改操作均报错。
元组的核心优势
数据安全:传递元组给函数时,无需担心函数修改数据。
可作为字典的 key:字典的 key 要求是可哈希对象(不可变),元组不可变可哈希。
字典:键值对映射的查询表 字典是 Python 中用于存储键值对(key-value)的结构,类似于 Java 的哈希,核心作用是通过 key 快速查找 value。
字典是什么? key 是唯一的,value 可重复且支持任意类型;key 与 value 是一对一映射。
创建字典 :用 {} 表示,key 与 value 之间用 : 分隔。推荐多键值对时分行书写。
字典的核心操作
查找 value :通过 key 访问。用 in 判断 key 是否存在;用 [key] 获取 value(不存在则报错 KeyError)。
新增 / 修改键值对 :通过 [key] = value 实现。若 key 不存在则新增,已存在则修改。
删除键值对 :用 pop(key) 删除指定 key 的键值对。
遍历字典 :遍历 key,再通过 key 获取 value。可用 keys()、values()、items() 方法。
合法的 key 类型 :必须是可哈希对象(int、str、bool、tuple 等不可变类型),不支持 list、dict 等可变类型。
文件:数据持久化的硬盘容器 变量存储的数据在程序重启后会丢失,而文件能将数据持久化存储到硬盘,是程序与外部数据交互的核心方式。
绝对路径 :从盘符开始的完整路径,唯一且不依赖基准目录。
相对路径 :以当前程序所在目录为基准的路径。
打开文件:open() 函数
语法:文件对象 = open(文件路径,打开方式,encoding=编码方式)
打开方式:r(只读,默认)、w(只写,清空原内容)、a(追加)。
encoding:指定文件编码(处理中文必须设置,如 utf-8、gbk)。
读写文件
写文件(w 或 a 模式):用 write(内容) 写入,内容必须是字符串。
读文件(r 模式):read(n) 读取字符、for 循环读行、readlines() 读取所有行。
关闭文件:close() 方法
必须用 close() 关闭文件,否则会导致文件句柄泄漏或数据未写入硬盘。
上下文管理器:with 语句
推荐用 with 语句打开文件,无需手动调用 close(),with 块执行完毕后自动关闭文件。
文件编码与代码读取编码必须一致,否则会出现乱码。常见中文编码:gbk(Windows 默认)、utf-8(跨平台通用)。
标准库:Python 自带的工具箱 标准库是 Python 安装后默认自带的库,无需额外安装即可直接使用。其覆盖场景极广,是 Python 生态的基础支撑。
分类 核心功能示例 内置函数 / 类型 函数:print()、input();类型:int、str、list、dict 文本处理 字符串切割、拼接、前缀判定等 时间日期 日期构造、差值计算(如 datetime 模块) 数学计算 数值运算、三角函数(如 math 模块) 文件目录 目录遍历、文件操作(如 os 模块) 数据存储 数据库操作、数据序列化(如 json 模块) 加密解密 哈希计算、加密算法(如 hashlib 模块) 操作系统相关 进程管理、环境变量(如 os 模块) 并发编程 多进程、多线程、协程(如 threading、multiprocessing 模块) 网络编程 TCP/UDP 通信、HTTP 请求(如 socket 模块) 多媒体 / 图形化界面 音频处理、窗口开发(如 tkinter 模块)
标准库的模块本质是独立的 .py 文件,需通过 import [模块名] 导入当前代码文件后使用。
import datetime
date1 = datetime.datetime(2012 , 2 , 14 )
date2 = datetime.datetime(2022 , 7 , 12 )
print (date2 - date1)
字符串是 Python 内置类型,其方法无需导入额外模块,可直接使用。常用方法包括 replace()、strip()、split()、join()、lower()、upper() 等。
需求:指定路径和关键词,查找路径下所有文件名含关键词的文件。
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 生态强大的核心原因。
步骤 1:找库 —— 确定合适的第三方库。
步骤 2:安装 —— 用 pip 管理库。基本命令:pip install [库名]。
步骤 3:导入使用 —— 与标准库用法一致。
import qrcode
img = qrcode.make('请关注中草药' )
img.save('qrcode.png' )
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 次自动播放音频,鼓励开发者。
《Python Cookbook(第 3 版)》:经典进阶书籍。
awesome-python:整理了 Python 实用库的集合。
500 Lines or Less:用简短代码实现有趣程序。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online