常州新北区有做淘宝网站策划的吗软件开发培训课程咨询

张小明 2026/1/11 7:30:45
常州新北区有做淘宝网站策划的吗,软件开发培训课程咨询,苗木网站怎么做,流量套餐一、全局变量和局部变量1.作用域在python中,作用域分为全局作用域和局部作用域.2.变量的作用域在局部定义的变量----局部变量在全局定义的变量----全局变量3.全局变量与局部变量的访问范围① 在全局作用域中可以访问全局变量#xff0c;在局部作用域中可以访问局部变量…一、全局变量和局部变量1.作用域在python中,作用域分为全局作用域和局部作用域.2.变量的作用域在局部定义的变量----局部变量在全局定义的变量----全局变量3.全局变量与局部变量的访问范围① 在全局作用域中可以访问全局变量在局部作用域中可以访问局部变量# 全局作用域全局变量 num1 10 def func(): # 局部作用域局部变量 num2 20 # ① 在局部访问局部变量 print(num2) # ① 在全局访问全局变量 print(num1) # 调用函数 func()② 在局部作用域中可以访问全局变量# 全局作用域全局变量 num1 10 def func(): # 局部作用域局部变量 # ② 在局部作用域中可以访问全局变量 print(num1) # 调用函数 func()③ 在全局作用域中不能访问局部变量# 全局作用域全局变量 num1 10 def func(): # 局部作用域局部变量 num2 20 # 调用函数 func() # 在全局作用域中调用局部变量num2 print(num2)这里运行会报错显示 num2 is not defined4.问题为什么在全局作用域中无法访问局部变量主要原因在于在Python的底层存在一个“垃圾回收机制”主要的作用就是回收内存空间。加快计算机的运行。我们在Python代码中定义的变量也是需要占用内存的所以Python为了回收已经被已经过的内存会自动将函数运行以后的内部变量和程序直接回收。二、闭包1.闭包的作用在函数嵌套的前提下内部函数使用了外部函数的变量并且外部函数返回了内部函数我们把这个使用外部函数变量的内部函数称为闭包。2.闭包的构成条件三个必要条件:有嵌套,有引用,有返回def func(): num 20 # 局部变量 def inner(): print(num) return inner # 实际上inner函数并没有执行只是返回了inner函数在内存中的地址 f func() # 相当于把inner在内存中的地址0x...赋值给变量f f() # 找到inner函数的内存地址并执行器内部的代码num20)在于闭包函数保留了num20这个局部变量闭包的作用正常情况下当执行func()的时候函数内部的变量num 20会随着函数的func函数的结束而被垃圾回收机制所回收。所以闭包的真正作用就是可以在全局作用域中实现间接对局部变量进行访问。注意:由于闭包引用了外部函数的变量则外部函数的变量没有及时释放消耗内存。3.在闭包的内部实现对外部变量的修改使用nolocal和globaldef outer(): num 10 def inner(): # 这种写法无法实现通过闭包修改外部的局部变量 nonlocal num num 20 print(outer函数中的num, num) # 10 inner() # 执行函数inner让num20生效 print(outer函数中的num, num) # 20 return inner f outer() f()4.闭包的综合案例闭包的作用可以在全局作用域中间接访问局部变量在函数执行以后 闭包编写三步走① 有嵌套 ② 有引用 ③ 有返回 分析 执行f func()的时候result赋值为0然后定义inner返回inner最终结果f inner函数的内存地址 执行f(1)相当于执行inner函数nonlocal引用局部变量result0然后进行1操作弹出011 继续执行 执行f(2)相当于执行inner函数声明nonlocal result代表还是引用外部的局部变量由于此时外部的result已经被 f(1)更改为1了所以由于局部变量一直没有消失所以此时result1执行2操作最终结果为3 def func(): result 0 def inner(num): nonlocal result result num print(result) return inner f func() f(1) # 1 f(2) # 3二、装饰器1.什么是装饰器在不改变现有函数源代码以及函数调用方式的前提下实现给函数增加额外的功能。装饰器的本质就是一个特殊的闭包函数,他在拥有闭包的特点的同时,又必须多一个添加额外功能的条件.2.装饰器的雏形# 要求把登录功能封装起来比如封装成一个函数添加这个登录不能影响现有功能函数 装饰器本质是一个闭包有嵌套、有引用、有返回返回的是函数的内存地址 参数fn在check中也是一个局部变量 参数fn就是要装饰的函数的函数名如comment如download def check(fn): def inner(): # 开发登录功能 print(登录功能) # 调用原函数 fn() return inner # 评论功能前提登录 def comment(): print(评论功能) comment check(comment) comment() # 下载功能前提登录 def download(): print(下载功能) download check(download) download()3.装饰器的定义 装饰器本质就是一个闭包 ① 有嵌套 ② 有引用 ③ 有返回 def check(fn): def inner(): # 开发登录验证功能 print(验证登录) # 执行原有函数 fn() return inner check def comment(): print(发表评论) comment()三、装饰器进阶1.带有参数的装饰器 带有参数的装饰器① 有嵌套 ② 有引用 ③ 有返回 def logging(fn): def inner(*args, **kwargs): # 添加装饰器代码输出日志信息 print(-- 日志信息正在努力计算机 --) # 执行要修饰的函数 fn(*args, **kwargs) # sum_num(a, b) return inner logging def sum_num(*args, **kwargs): result 0 # *args代表不定长元组参数args (10, 20) for i in args: result i # **kwargs代表不定长字典参数 kwargs {a:30, b:40} for i in kwargs.values(): result i print(result) # sum_num带4个参数而且类型不同10和20以元组形式传递a30b40以字典形式传递 sum_num(10, 20, a30, b40)2.带有返回值的装饰器 带有返回值的装饰器① 有嵌套 ② 有引用 ③ 有返回 如果一个函数执行完毕后没有return返回值则默认返回None def logging(fn): def inner(*args, **kwargs): print(-- 日志信息正在努力计算 --) return fn(*args, **kwargs) # fn() sub_num(20, 10) result return inner logging def sub_num(a, b): result a - b return result print(sub_num(20, 10))3.装饰器高级使用装饰器传递参数 通用装饰器① 有嵌套 ② 有引用 ③ 有返回 ④ 有不定长参数 ⑤ 有return返回值 真正问题通过装饰器传递参数我们应该如何接收这个参数呢 答在logging方法的外侧在添加一个函数专门用于接收传递过来的参数 def logging(flag): # flag 或 flag - def decorator(fn): def inner(*args, **kwargs): if flag : print(-- 日志信息正在努力进行加法运算 --) elif flag -: print(-- 日志信息正在努力进行减法运算 --) return fn(*args, **kwargs) return inner return decorator logging() def sum_num(a, b): result a b return result logging(-) def sub_num(a, b): result a - b return result print(sum_num(10, 20)) print(sub_num(100, 80))四、结语今天讲的闭包和装饰器,可能有的小细节没有讲的很透彻,大家在看的时候有哪些还不懂得地方可以私信我.
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

备案号 不放在网站上餐厅网站建设文案书

第一章:边缘设备 Agent 能耗问题的现状与挑战随着物联网(IoT)和边缘计算的快速发展,边缘设备上部署的 Agent 程序在数据采集、本地推理和远程协同中扮演着关键角色。然而,受限于设备的供电方式与硬件资源,A…

张小明 2025/12/31 13:55:17 网站建设

对网站开发的理解500字经典页游排行榜前十名

Windows系统核心组件优化指南 在Windows系统的使用过程中,对系统核心组件进行优化可以显著提升计算机的性能。本文将详细介绍如何对Windows的分页文件、硬盘进行优化,以及升级固态硬盘的相关内容。 1. 分页文件优化 Windows的分页文件,也被称为交换文件或虚拟内存,对系统…

张小明 2025/12/31 22:02:58 网站建设

北京市环境建设办公室网站网站建设公司华网天下买赠两年

在供应链体系中,仓库处于连接生产与销售的关键环节,其管理效率直接影响企业运营成本与客户满意度。选择适合的仓库管理系统(WMS)已成为企业提升供应链竞争力的重要举措。本文基于公开市场数据、行业报告(如物流品牌网、…

张小明 2025/12/30 0:43:19 网站建设

怎么制作网站后台网络营销的五大特点

在前端开发中,"跨域"是一个绕不开的话题。无论是调用第三方 API,还是前后端分离项目中的本地联调,我们都可能遇到它。一、什么是跨域问题?要理解跨域,首先要知道什么是同源策略。同源策略(Same-O…

张小明 2026/1/1 20:12:02 网站建设

大连网站建设方法郑州恩恩网站建设

Qwen-Image解析:文本渲染与图像编辑的突破 在AI生成内容(AIGC)迅速渗透设计、广告和出版等领域的今天,一个核心问题始终悬而未决:我们能否真正“控制”AI画出的东西?尤其是面对中文这种结构复杂、书写讲究的…

张小明 2025/12/31 7:30:17 网站建设

微信公众号网站开发语言火车头导入wordpress

Kotaemon文档翻译功能扩展教程:一键支持多语言问答 在全球化浪潮不断推进的今天,企业面对的用户群体早已跨越国界。无论是跨国公司的内部知识系统,还是面向全球用户的智能客服平台,单一语言的支持能力已远远无法满足实际需求。一个…

张小明 2025/12/30 0:35:08 网站建设