发布时间:2026/7/29 3:58:59
Python康复训练——控制流与函数 一、控制流控制流决定代码走哪条路、走几次。Python 用缩进对齐来划分代码块没有大括号也没有switch。1. if 条件判断# 控制流/if 结构ifscore60:print(不及格)elifscore80:print(及格)elifscore90:print(良好)else:print(优秀)要点if/elif/else结尾都带:后跟缩进块。elif、else可省略分支可任意扩展。Python 没有switch多分支用if-elif-else或者用字典映射来替代——查表比长串 if 更清晰。三元表达式if 表达式rankGoodifscore90elseNot bad一句话给变量赋值等价于其他语言的条件 ? a : b。2. while 循环while条件:循环体else:# 循环正常结束没被 break时才执行print(done)while的else子句是个容易被忽略的特性只有循环没有被break打断、自然走完时才会执行。一旦breakelse不跑。这个语义和多数语言不同记牢。3. for 循环foriinrange(1,8):print(i)else:print(OK)for遍历序列列表、字符串、range等每次取一个值赋给循环变量。else子句的语义和while一样正常结束才执行。4. break 与 continuebreak跳出整个循环else不会执行。continue跳过本次循环的剩余语句直接进下一轮。# 输出奇数forxinrange(1,9):ifx%20:continueprint(x)小结break管整个循环停不停continue管这一轮跳不跳else管循环是不是体面结束的。三者搭配能写出很自然的搜索逻辑。二、函数函数把一段逻辑封装起来给个名字重复调用。1. 定义与调用defsay_hi():print(Hi, everybody!)say_hi()say_hi()def 函数名(参数):后跟缩进块。函数没写return时默认返回None。2. 参数的四种形态这是函数部分的核心理清参数怎么传形态写法说明位置参数def f(x, y)按顺序传实参给形参赋值默认值参数def f(s, times1)必须放在无默认值参数后面关键字参数f(b3, a1)按名字传不用记顺序可变参数*args/**kwargs收集多余的位置/关键字参数# 可变参数* 收集成元组** 收集成字典deftotal(a5,*words,**dic):foriinwords:# words 是 tupleprint(seq:,i)fork,vindic.items():# dic 是 dictprint(%s - %s%(k,v))total(5,4,3,2,Jack12,Joe8)顺序铁律位置参数 → 默认值参数 →*args→**kwargs乱排会报错。3. return 与多返回值# 用元组一次返回多个值defswap(x,y):return(y,x)a,bswap(a,b)# 元组解包Python 没有只能返一个值的限制——靠元组装多个值调用端用解包接收。这是 Python 特有的简洁写法a, b b, a这种交换也基于此。4. 局部变量与全局变量函数内部定义的变量是局部变量作用域只在函数内。函数外部定义的是全局变量函数内可读。同名时局部优先想在函数内修改全局变量必须用global声明否则只是新建了个同名局部变量。vglobaldeffun():globalv# 声明后才能改外部的 vvlocalfun()print(v)# 输出 localglobal能不用就不用。函数依赖外部变量改值是 bug 温床也让函数难以测试和复用。5. 文档字符串docstring函数、模块、类的第一个逻辑行字符串就是它的文档存在__doc__里help()能提取。deffun_void():空函数 测试空函数 passprint(fun_void.__doc__)help(fun_void)约定第一行一句话总结第二行空行第三行起详细描述。写 docstring 是 Python 的工程素养起点——配合 FastAPI 这类框架docstring 还会直接变成接口文档。三、lambda一行函数lambda创建一个匿名函数对象接收参数返回一个表达式的值。没有return表达式本身就是返回值。# 按字典里的某个键排序data[{x:8,y:23},{x:2,y:98},{x:4,y:3}]data.sort(keylambdai:i[x])# 按 x 排典型场景当临时函数、只在一个地方用、逻辑简单排序 key、过滤条件等。逻辑复杂就老老实实写deflambda 会越写越难读。四、模块与包函数管逻辑复用模块和包管文件级组织。1. 模块导入importsys# 导入整个模块用 sys.argv 访问frommathimportsqrt# 只导入需要的名字直接用 sqrt()import 模块模块名当命名空间模块.属性访问推荐不会撞名。from ... import *把模块里所有公开名字一股脑倒进来慎用——容易和当前作用域撞名还看不出名字哪来的。Python 按sys.path列表里的目录去找模块自定义模块要放在这些路径下。2.__name__ __main__每个模块都有__name__独立运行时等于__main__被 import 时等于模块名。用这个判断来区分直接跑和被导入if__name____main__:print(本模块独立运行)else:print(本模块被其他模块导入)这是 Python 模块的惯用入口——把测试/启动代码放if __name__ __main__:里别人 import 时不会误触发。3. dir() 函数dir()返回对象定义的名称列表无参返回当前模块的名字传对象返回该对象的名字。排查这个名字从哪来很有用。4. 包包 目录 __init__.py。__init__.py告诉 Python这个目录是个包。包用来管理模块形成层级hzgj/ # 顶层包 ├── __init__.py ├── market/ # 子包 │ ├── __init__.py │ └── Pkg01.py └── product/ ├── __init__.py └── Pkg02.py导入时用点号串起来import hzgj.market.Pkg01 as p1。小结函数管逻辑模块管文件包管目录。从def到import再到包是代码组织能力的三级跳——写小脚本用函数就够工程化就得靠模块和包分层。

相关新闻

2026/7/29 3:58:59

TF02-i-CAN激光雷达快速上手指南:硬件连接、数据解析与配置实战

1. 项目概述:从开箱到通信的快速通道最近在做一个需要中短距离测距的项目,选型时看中了北醒的TF02-i-CAN这款激光雷达模组。东西到手后,第一件事就是让它和电脑“说上话”,把数据读出来。但翻遍资料,发现官方文档虽然详…

2026/7/29 3:53:59

Klipper双Z轴等高校准:解决3D打印第一层不平整的终极方案

1. 项目概述:为什么双Z轴校准是3D打印质量提升的关键一步如果你玩3D打印机有一段时间了,特别是用过一些DIY套件或者自己升级过机器,大概率会遇到一个让人头疼的问题:打印出来的模型,第一层靠近左边和靠近右边的厚度总是…

2026/7/29 3:53:59

运维人的出路在哪里?特别是在35岁之后

在IT圈,有个很有意思的现象:不少运维工程师干着干着,就一头扎进了网络安全的“坑"里。有人说这是“自卷”,也有人说这是“顺势而为”。今天就和大家聊聊:运维转岗网安到底要学什么?这条路又藏着哪些“甜头”?网安岗位的需求和薪资天花…

2026/7/29 4:49:12

单片机C语言预处理指令:从宏定义到条件编译的实战指南

1. 从“裸机”到“智能”:预处理指令为何是单片机的基石如果你刚开始接触单片机编程,尤其是用C语言,可能会觉得那些以“#”开头的行有点神秘。它们不像int a 5;或者while(1)那样直接控制硬件,但几乎每个单片机项目都离不开它们。…

2026/7/29 4:49:12

深入解析PN结正向与反向偏置:从原理到实战应用

1. 从一次“诡异”的电路故障说起去年,我帮一个朋友调试他DIY的音频放大器。电路板焊得整整齐齐,元件也没错,但一通电,预期的声音没出来,反而某个三极管烫得能煎鸡蛋。他一脸困惑:“我明明按照原理图接的&a…

2026/7/29 4:49:12

Python 入门第一天:变量、字符串、运算符与输入输出

Python 是一门非常适合初学者的编程语言。它的语法简洁,代码可读性强,即使没有编程基础,也能够比较快地写出自己的第一个程序。学习 Python 时,我们不需要一开始就研究复杂的算法。先掌握字面量、变量、字符串、运算符、注释、类型…

2026/7/29 4:49:12

工业时序数据处理实战:百万级检测数据如何做到毫秒级查询

分享一个工业数据处理中的技术选型和优化经验。场景描述某3C代工厂,产线上部署了多台视觉检测设备,每台设备每秒钟产生30-50条检测结果。数据包含:检测时间、产品ID、缺陷类型、缺陷坐标、判定结果(良品/不良品)等字段…

2026/7/29 4:49:12

安卓第三方APK安全获取与安装全指南

1. 项目概述最近在安卓应用开发社区,不少开发者都在讨论如何安全获取和安装第三方应用。作为一名有十年移动开发经验的工程师,我想分享一个典型场景下的完整解决方案。今天要讨论的这个案例,涉及到一个名为"ehviewer"的应用的获取与…

2026/7/29 4:44:12

NumPy结构化数据类型:高效处理异构表格数据的核心利器

1. 项目概述:为什么我们需要结构化数据类型?在数据处理和分析的日常工作中,我们常常会遇到一种情况:数据不是单一维度的。比如,处理一份员工信息表,每一行数据都包含了姓名(字符串)、…

2026/7/28 13:41:25

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/29 0:02:56

商标注册找代理还是自己办?算清这笔“时间账”和“风险账

商标注册,找代理还是自己办?帮你算清这笔“时间账”和“风险账”“商标注册,找代理还是自己办?”这是深圳每个创业者都会遇到的灵魂拷问。有人说找代理是花冤枉钱,有人说自己办风险太高。到底哪种更划算?本…

2026/7/29 0:02:56

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 你是否厌倦了每天重复枯燥的数据录入和报表整理工作?是否希望有…

2026/7/29 0:02:56

KMS智能激活工具:一站式解决Windows和Office激活难题

KMS智能激活工具:一站式解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统弹出激活提示而烦恼吗?KMS智能激活工具能够帮你彻底告别W…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…