【Python专项】进阶语法-日志分类与分析(1)
进阶语法-日志分类与分析1.函数的定义与调用 函数解决代码重用而来的 def 函数名称(参数): 函数体 return xxx 函数名称(参数的值) 同一个函数随着传入参数的不同可以返回不同的执行结果 defgreet(name):print(Hi,f{name})greet(AWS)greet(Banana)greet(ChatGPT) 代码总结核心知识点函数的定义与调用、参数传递、代码复用实现逻辑使用def定义greet函数接收name参数三次调用函数并传入不同实参输出不同的问候语关键语法def 函数名(参数):定义函数、函数名(参数值)调用函数、字符串拼接Hi, name复用特性同一函数体随传入参数值不同产生不同的执行结果功能作用演示函数的基本定义与调用方式理解参数化设计对代码复用的重要性2.return返回值 return返回值作用非必须作用有二 作用一返回一个结果给函数的调用位置 作用二终止函数类似循环中的 break 函数中一旦执行了 return 语句则会终止整个函数 # 1.定义有返回值的函数defsum_fun(num1,num2):resultnum1num2returnresult# 将最终结果使用 return 进行返回# 调用函数print(sum_fun(33,66))# 2.定义没有返回值的函数defsum_fun2(num1,num2):resultnum1num2print(result)# 如果一个函数在定义的时候没有指定返回值则默认返回为 None 空print(sum_fun2(11,22))# 会返回值及 None# 3.return 类似于 break 的作用deff3():return1return2return3print(f3()) 代码总结核心知识点return语句的数据返回与流程控制作用实现逻辑将计算结果交还调用处执行return后立即终止函数后续代码未显式返回时默认产出None关键语法return value隐式return None功能作用明确函数数据流向与生命周期边界区分“打印输出”与“数据返回”的本质差异3.封装验证码生成函数 验证码实现 字符串 随机数 定义循环 封装组合 importrandomdefgenerate_code():str10123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZcodeforiinrange(6):indexrandom.randint(0,len(str1)-1)codestr1[index]returncodeprint(您的随机验证码为generate_code())print(您的随机验证码为generate_code())print(您的随机验证码为generate_code())print(您的随机验证码为generate_code())print(您的随机验证码为generate_code()) 代码总结核心知识点业务逻辑函数封装实战实现逻辑构建字符池循环4次生成随机索引并拼接字符最终通过return输出完整验证码关键语法import randomrandom.randint()字符串累加return功能作用演示将多步操作封装为独立函数结合循环与随机数实现动态数据生成4.字符串的拼接操作aXbYcZd1codeabcdprint(code) 代码总结核心知识点字符串基础拼接运算实现逻辑使用运算符将多个单字符变量顺序连接为新字符串关键语法str1 str2 ...功能作用展示字符串累加的底层语法为验证码生成、路径拼接等场景提供基础支持5.变量作用域 随着函数出现作用域被强制划分为两种情况全局作用域 局部作用域 普及一个关键字占位符 pass 没有实际意义只是占用位置 # 全局作用域num110# 全局变量deffunc():# 局部作用域num1100# 局部变量returnnum1print(num1)print(func()) 代码总结核心知识点全局作用域与局部作用域的物理划分实现逻辑函数外部定义的变量归属全局函数内部定义的变量归属局部使用pass保持语法完整关键语法变量定义位置决定作用域pass占位符功能作用引入作用域概念明确变量可见性的代码边界为后续跨作用域访问铺垫6.全局变量的使用num144deffunc():print(num1)print(num1)# 全局变量直接调用func() 代码总结核心知识点全局变量的读取权限实现逻辑验证全局变量可在全局范围及函数内部被直接读取访问关键语法直接引用全局变量标识符功能作用确认全局变量的宽泛可见性说明跨作用域读取数据的合法性7.局部变量的使用# 局部变量在函数内部局部作用域中定义的变量deffunc():num6100returnnum6# print(num6) # 全局作用域是否可以访问局部变量print(func())# 调用局部变量才可以输出 代码总结核心知识点局部变量的访问限制与生命周期实现逻辑局部变量仅在函数体内有效函数执行结束后被垃圾回收外部访问将触发错误关键语法函数内定义变量外部调用报错演示功能作用验证局部变量的窄作用域特性解释内存回收机制对变量生命周期的自动管理8.global关键字使用 局部作用域影响全局如何实现 global 关键字 1.global 只能在函数内部使用 2.global 只能声明变量 n110deffunc():globaln1# 将这里的 n1 声明成全局的而不是内部的n166# 相当于修改了外面那个全局变量print(n1)# 查看是否修改func()# 必须调用 func() 函数 才可完成修改print(n1) 代码总结核心知识点global关键字修改全局状态实现逻辑函数内默认赋值会创建同名局部变量使用global显式声明后后续赋值将直接修改全局变量关键语法global var_namevar_name new_value功能作用突破局部作用域写入限制实现函数内部对全局数据的合法变更9.函数参数的位置传递# 位置传参顾名思义根据函数的位置进行参数的传递# 定义 函数传参defusers_info(name,age,address):print(f{name},{age},{address})# 调用函数实参位置传递users_info(kaser,21,xian) 代码总结核心知识点位置参数传参机制实现逻辑实参严格按照形参定义的顺序依次对应绑定关键语法func(arg1, arg2, arg3)功能作用演示最基础的函数调用方式强调参数顺序的严格对应关系10.函数参数的关键词传递# 关键词传参 根据参数的名称匹配成功之后进行参数传递没有位置要求defusers_info(name,age,address):print(f{name},{age},{address})users_info(addressxian,namekaser,age21)# 输出 -- nameageaddress 代码总结核心知识点关键字参数传参机制实现逻辑通过形参名实参值明确指定映射关系解除位置顺序限制关键语法func(nameval, ageval)功能作用提升调用可读性与灵活性有效避免多参数场景下的顺序错乱问题11.函数的默认值参数缺省参数defusers_info(name,age,gender男):print(f姓名{name},年龄{age},性别{gender})users_info(kaser,21)# 上面的函数定位 男 为 gender 的默认值users_info(saker,24,女) 代码总结核心知识点默认值参数缺省参数实现逻辑定义时为形参预设默认值调用时省略该参数则使用默认值传入则覆盖关键语法def func(paramdefault):功能作用简化高频场景的调用代码提供参数配置的向后兼容性与灵活性12.不定长参数之包裹位置参数*args 包裹位置参数 只能接收位置参数参数的数量可以不固定如 0个1个2个甚至多个 只能使用 *args 参数进行接收最终返回的变量为元组类型的数据 deffunc(*args):print(args)print(type(args))func()# 不传参func(1)# 传递 1个参数func(1,2)# 传递 2个参数func(1,2,3)# 传递多个参数 代码总结核心知识点包裹位置参数*args实现逻辑收集任意数量的位置实参自动打包为元组供函数内部处理关键语法def func(*args):返回tuple功能作用解决参数数量动态变化的场景提供灵活的位置参数收集机制13.不定长参数之包裹关键词参数**kwargs 包裹关键词参数只能接收关键词参数参数的数量可以不固定如0个、1个、2个甚至多个只能使用**kwargs参数进行接收。最终返回这个变量kwargs是一个字典类型的数据。 kw keyword argsarguments参数 deffunc2(**kwargs):print(kwargs)print(type(kwargs))# 不传参func2()# 传递1个参数func2(a10)# 传递多个参数func2(a10,b20,c30) 代码总结核心知识点包裹关键字参数**kwargs实现逻辑收集任意数量的关键字实参自动打包为字典供函数内部处理关键语法def func(**kwargs):返回dict功能作用解决动态键值对传参场景提供灵活的关键字参数收集机制14.包裹位置参数*args与包裹关键字**kwargs参数混用场景 注意*args 只能接收位置参数 注意**kwargs 只能接收关键词参数 注意混用时*args 必须在左**kwargs 必须在右 案例 编写一个函数融合位置参数与关键词参数求解所有参数的累加和 1 2 3 4 5 deffunc(*args,**kwargs):sum10foriinargs:sum1iforjinkwargs.values():sum1jprint(f最终计算结果{sum1})func(1,2,3,a4,b5) 代码总结核心知识点*args与**kwargs混合使用规则实现逻辑位置参数打包为元组关键字参数打包为字典遍历两者提取数值求和严格遵循参数定义顺序关键语法def func(*args, **kwargs):args在左kwargs在右功能作用演示万能参数签名模式展示混合参数的解析逻辑与业务计算实现15.函数的调试工具 PyCharm Debug调试功能 调试代码执行流程如if/while/for循环 函数的调试 ① 打断点 if/while/for开头位置如果是函数则断点必须打在函数的调用位置 ② 启动调试 ③ 使用调试按钮一步一步执行代码 ------------------------------ 调试按钮有所不同 如果是非函数代码调试使用Step Over一步一步执行遇到函数则不进入函数内部而是直接返回函数执行结果继续向下执行 如果是函数代码调试使用Step Into一步一步执行遇到函数则进入函数内部而不是直接返回结果在函数内部一步一步执行直到结束然后继续向下执行 # 1. 定义函数用于求解两个参数的累加结果defsum_num(num1,num2):resultnum1num2returnresult# 2. 调用函数sumsum_num(10,20)print(sum) 代码总结核心知识点IDE 调试技巧与函数执行流追踪实现逻辑通过断点暂停程序使用 Step Over 跳过函数执行使用 Step Into 深入函数内部逐行跟踪关键语法IDE 调试操作非代码语法功能作用提供可视化排错手段明确不同调试按钮的适用场景提升函数逻辑验证效率